Gibt man ein Objekt mit
free frei wird das Objekt zwar aus dem Speicher entfernt, die Variable aber beinhaltet noch einen, nicht mehr gültigen, Zeiger auf einen Speicherbereich. Somit schlägt
Assigned oder die Abfrage auf
nil fehl und ergibt
true.
FreeAndNil(obj);
Oder
Aber da du einfach zu wenig Informationen gibst, wie das Threadobjekt erzeugt wird, was das Threadobjekt macht und wie es wieder freigegeben wird, kann man dir auch nicht so recht helfen.