Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer im Thread (https://www.delphipraxis.net/80201-timer-im-thread.html)

Florian_Meyer 4. Nov 2006 15:27


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:
procedure TConnectPHP.Execute;
begin
  MyTimer := TTimer.Create(nil);
  MyTimer.Enabled := True;
  MyTimer.Interval := 10000;
  MyTimer.OnTimer := TimerEvent;
end;
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.

Hat da jemand ne Idee zur Lösung?


MfG
F.M.

Khabarakh 4. Nov 2006 15:32

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.

DocE 4. Nov 2006 15:33

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

Florian_Meyer 4. Nov 2006 15:47

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

Khabarakh 5. Nov 2006 14:44

Re: Timer im Thread
 
Zitat:

Zitat von Florian_Meyer
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.

Dann würde ich lieber nach einem Fehler im ersten Versuch suchen oder hier um Hilfe fragen, als das Problem mit solch einer - sorry - unsinnigen Lösung zu umgehen ;) .

Thorben_K 6. Nov 2006 13:09

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 00:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz