Thema: Delphi Event in Thread

Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#7

AW: Event in Thread

  Alt 11. Mär 2017, 17:43
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...
  Mit Zitat antworten Zitat