Wie kann ich feststellen, ob das Threadobjekt noch lebt?
Das
FreeOnTerminate
eben nicht verwenden.
Ich habe aber den Eindruck, dass MyThread nicht auf NIL gesetzt wird, wenn der Thread sich selbst auflöst
Richtig. Der Thread kann selbst auch gar nicht wissen, welche Variablen auf ihn zeigen.
Du musst dich entscheiden - Entweder du machst FreeOnTerminate, das heißt es ist Fire&Forget: Du startest den Thread und danach fasst du ihn nie wieder an. Deshalb macht es auch keinen Sinn ihn dann überhaupt in einer Variable zu speichern.
Oder du nutzt eben kein FreeOnTerminate, musst nachschauen wann er zu Ende ist, und wenn du ihn nicht mehr brauchst, gibst du ihn frei (.Destroy()).