ok, das habe ich tatsächlich falsch verstanden. Ich bin eigentlich davon ausgegangen dass WaitFor wartet bis Execute beendet wird. Da dies offensichtlich nicht der Fall ist, ist auch das Verhalten plausibel.
Gibt es trotzdem eine Lösung für mein Problem?
Ich probierte übrigens auch das Close aus dem Hauptthread heraus auszulösen. Da aber unmittelbar anschliessend der Hilfsthread beendet wird, trat das Problem genau gleich auf:
Delphi-Quellcode:
begin
SendCloseToHilfsthread; //Close wird in dem Fall noch in der While-Schleife ausgeführt
Hilfsthread.Terminate;
Hilfsthread.WaitFor;
//alles andere freigeben
end;