in your original code, the thread object is created directly in the form and is called MyClass
in your second cut, your thread object (now named childclass) does not have a create event.
It's owner (TParentClass) does, but not the thread itself.
for any class that has other objects & classes inside it, it needs to ceate and free them the same as if the objects were used outside of class.
for example: I sometimes need to use a tstringlist inside a object I'm creating and am required to include a myobject.create that has a tstr := tsringlist.create and a myobject.destroy() that includes a tstr.free statement for proper memory management