Zitat von
Assertor:
Wird Thread
n.Destroy eines TThread wirklich im Bereich des
VCL MainThreads abgewickelt wird? Wenn ich mir im .Destory per GetCurrentThreadID die ID hole, ist diese nicht die des
VCL MainThreads.
TThread.Destroy wird in dem Thread ausgeführt der es aufruft. Und wenn du FreeOnTerminate=True gesetzt hast, dann wird das noch im TThread.ThreadId Thread ausgeführt. Wenn du den Code zwingend im Hauptthread ausführen musst, kannst du OnTerminate ein Event zuweisen das die Arbeit verrichtet. Das Event ist deswegen notwendig, weil CallOnTerminate nicht virtuell ist und die Methode DoTerminate im Thread ausgeführt wird.