Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Erste Schritte Multi-Threading

  Alt 28. Nov 2023, 10:14
Vielen Dank, dass wusste ich noch nicht.
Ich habe die Auslagerung gestern noch mit einer eigenen Unit gelöst, werde ich nachher posten.

Kurze Frage zu den Events: Sollten diese auch in einer eigenen Unit definiert werden oder im der Form, in der sie zur Anwendung kommen sollen?

Ich habe mich an den folgenden Links entlanggehangelt:
https://docwiki.embarcadero.com/RADS...nisse_(Delphi)

und bei diesem Thema an Post 2
https://www.delphipraxis.net/70116-e...rammieren.html

Das ist bis jetzt dabei rausgekommen:
Delphi-Quellcode:
type
   TTimeEvent = procedure (TimeValue: TTime) of object;
   TTimeObject = class
   private
     FTimeValue: TTimeEvent;

   public
     property OnGetTime: TTimeEvent read FTimeValue write FTimeValue;
     { Löst das Ereignis aus, wenn etwas registriert ist }
     procedure TriggerTimeEvent(TimeValue: TTime);
   end;
   TForm1 = class(TForm)
      lbl_eins: TLabel;
      lbl_zwei: TLabel;

...

private
      { Private-Deklarationen }
      MyThread: TMyThreads;

...

var
  Form1: TForm1;
  TimeObject: TTimeObject;

implementation

{$R *.dfm}

{ TTimeObject }

procedure TTimeObject.TriggerTimeEvent(TimeValue: TTime);
begin
   if Assigned(FTimeValue) then begin
      FTimeValue(TimeValue);
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   MyThread := TMyThreads.Create;
   TimeObject := TTimeObject.Create;
   TimeObject.OnGetTime := Write_Uhr;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
   MyThread.TH_Uhr_Start(False);
end;
In meiner ThreadUnit muss ich jetzt aber irgendwie den Aufruf anstoßen:
Delphi-Quellcode:
{ TMyThread_Uhr }

procedure TMyThread_Uhr.Execute;
var I: integer;
      sUhr: integer;
begin
   sUhr := 1000;
   while not Terminated do begin
      sleep(sUhr);
      Synchronize(procedure
                  begin
                     Form1.Write_Uhr(Now());
                  end);
   end;

end;
Und da weiß ich nicht, wie ich den Bezug zu Form1 loswerde...

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat