![]() |
Therad und Timer???
Hallo!
Sind Threads und Timer nicht kompatibel oder wie? Ich erstelle im Thread einen Timer und der führt die OnTimer-Procedure überhaupt nicht aus! :wall: z. B.:
Code:
Mache ich etwas falsch?
...
type TMyThread = class(TThread) private {private declarations} timer: TTimer; FStartTime: TDateTime; procedure TimerOnTimer(Sender: TObject); protected procedure Execute; override; end; ... procedure TMyThread.TimerOnTimer(Sender: TObject); begin Form1.Edit1.Text := FormatDateTime('NN:SS', Now - FStartTime); end; procedure TMyThread.Execute; begin FStartTime := Now; timer := TTimer.Create(nil); timer.OnTimer := TimerOnTimer; timer.Interval := 100; ... while not terminated do begin //Hier macht der Thread sein Hauptjob end; ... timer.Free; end; |
Re: Therad und Timer???
Du musst in deinem Execute auch eine Messageloop einbauen sonst beendet der Thread doch sofort. Oder haste das jetzt ausge . tet ?
|
Re: Therad und Timer???
Ja, ich habe die Kode oben ein wenig geändert. Läuft trotzdem nicht ;(
|
Re: Therad und Timer???
Hi,
Antwort von Vjay schon mal richtig! Frage: Warum ein Timer im Thread? Der Timer verhält sich doch selber wie ein Thread. Was soll der da? Aber zu deiner Frage. Ergänze deinen Code um folgendes: in private: FTimerTimer : Boolean; im Ereignis TimeronTimer: FTimerTimer := True; in Execute:
Delphi-Quellcode:
Dann arbeitet dein execute solange, bis der Thread terminiert wird oder dein OnTimer-Ereignis eintritt.
procedure TMyThread.Execute;
begin FStartTime := Now; ... timer := TTimer.Create(nil); timer.OnTimer := TimerOnTimer; timer.Interval := 100; while not terminated or FTimerTimer do begin ... ... end; end; Prüfe bitte auch, ob dein Thread gestartet ist. Gruß oki |
Re: Therad und Timer???
Danke erstmal! Ich versuche jetzt! ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz