Da das
Event OnTerminate im Kontext eines Threads läuft darf man nicht einfach auf die
VCL direkt zugreifen.
Das stimmt nicht. OnTerminate ist ein synchronisierter Event, d.h. von dort aus kann man völlig problemlos auf die
VCL zugreifen.
Hier der Code-Ausschnitt aus Classes.pas (D2007):
Delphi-Quellcode:
procedure TThread.CallOnTerminate;
begin
if Assigned(FOnTerminate) then FOnTerminate(Self);
end;
procedure TThread.DoTerminate;
begin
if Assigned(FOnTerminate) then Synchronize(CallOnTerminate);
end;