Mit Event in etwa so (dahingetippt):
Delphi-Quellcode:
type
TOnTutSichWas = procedure(Sender: TObject; AMyData: TMyData) of object;
TMyThread = class(TThread)
private
FMyData: TMyData; // Klasse, Record, String, was auch immer; wird im Thread mit Daten gefüllt
FOnTutSichWas: TOnTutSichWas;
procedure DoSynchronize; // Methode, die im Thread mit Synchronize aufgerufen wird
public
property OnTutSichWas: TOnTutSichWas read FOnTutSichWas write FOnTutSichWas;
end;
{...}
procedure TMyThread.DoSynchronize;
begin
if Assigned(FOnTutSichWas) then
FOnTutSichWas(Self, FMyData);
end;
Eine Message versende ich nur, wenn der Thread auf ein Ereignis warten muss und mehr nicht, also dem Hauptthread nur mitteilen muss, "Hey da tut sich was, schau mal nach."