![]() |
Timer im Thread
Hallo,
ich möchte einen timer in einem Thread zur Laufzeit erstellen... Das Problem ist, dass bei Execute des Threads der Inhalt ja nur einmal durchlaufen wird und danach wird beendet, d. h. der timer geht einmal an und gleich wieder aus.
Delphi-Quellcode:
Das Problem ist, ich kann auch nicht while not terminated verwenden, da ja dann jedes mal ein neuer Timer erstellt wird, das möchte ich ja gar nicht.
procedure TConnectPHP.Execute;
begin MyTimer := TTimer.Create(nil); MyTimer.Enabled := True; MyTimer.Interval := 10000; MyTimer.OnTimer := TimerEvent; end; Hat da jemand ne Idee zur Lösung? MfG F.M. |
Re: Timer im Thread
Fangen wir mal ganz von der anderen Seite an: Wozu soll denn bitte ein Timer in einem Nebenthread gut sein :gruebel: ? Da er den Hauptthread nicht blockiert, kannst du reinen Gewissens Sleep einsetzen.
|
Re: Timer im Thread
Hallo Florian,
das lässt sich folgendermaßen lösen:
Delphi-Quellcode:
procedure TConnectPHP.Execute;
var Msg: TMsg; begin MyTimer := TTimer.Create(nil); MyTimer.Enabled := True; MyTimer.Interval := 10000; MyTimer.OnTimer := TimerEvent; while not Terminated do begin while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin if Msg.Message <> WM_QUIT then // bekommt ein Thread vermutlich nie, aber gut begin TranslateMessage(Msg); DispatchMessage(Msg); end; end; end; try MyTimer.Free; except end; end; Grüsse ...Doc |
Re: Timer im Thread
Aus dem Grunde, weil der Thread bei mir irgendwie abstürzt, wenn ich sleep drin habe und deswegen wollte ich es mal mit nem timer ausprobieren.
@DocE: Danke, ich werde das gleich mal ausprobieren. //EDIT: Danke, es haut hin!! :-D |
Re: Timer im Thread
Zitat:
|
Re: Timer im Thread
das try bei Timer.Free muss auch net sein, weil Free eh erst abcheckt ob es das Objekt gibt ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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 by Thomas Breitkreuz