If the execution process entered your destructor then you have to clean up after your self and continue.
Creating in constructor, freeing in destructor - it's right
but it's a difficult problem in TThread, because some fields of object may be in use
I understand that the transfer would not solve the problem completely
but I think that the current implementation is the source of the problem