Hmm..
Ich würde das wie schon geschrieben über den Contructor lösen:
Delphi-Quellcode:
type
TOnSendAnMain=procedure(Sender: TObject; Irgendwas: string) of object;
TMyThread=class(TThread)
private
FNeedSync : boolean;
FIrgendwas: string;
FOnSendAnMain: TOnSendAnMain;
procedure DoSendAnMain(Irgendwas: string);
procedure DoSendAnMainSyc;
protected
procedure Execute; override;
property OnSendAnMain: TOnSendAnMain read FOnSendAnMain write FOnSendAnMain;
property NeedSync : boolean read FNeedSync write FNeedSync;
public
constructor create(AOnSendAnMain: TOnSendAnMain;ANeedSync : boolean);reintroduce;
end;
implementation
{ TMyThread }
constructor TMyThread.create(AOnSendAnMain: TOnSendAnMain;
ANeedSync: boolean);
begin
FIrgendwas := '';
FOnSendAnMain:= AOnSendAnMain;
FNeedSync := ANeedSync;
inherited create(false);
end;
procedure TMyThread.DoSendAnMain(Irgendwas: string);
begin
FIrgendwas := Irgendwas;
if FNeedSync then begin
Synchronize(DoSendAnMainSyc);
end else
DoSendAnMainSyc;
end;
procedure TMyThread.DoSendAnMainSyc;
begin
if Assigned(FOnSendAnMain) then FOnSendAnMain(self, FIrgendwas);
end;
procedure TMyThread.Execute;
begin
DoSendAnMain('Bla bla bla');
end;
Dadurch kann beim erstellen des Thread-Objectes entschieden werden, ob ein Sync notwendig ist, oder nicht...