Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Timer für "threaded environments"

  Alt 18. Dez 2006, 16:07
Da reicht doch eine einfache Sleep-Funktion:
Delphi-Quellcode:
const
   DELAYTIME=(1.0/24.0/60.0*5); // 5 Min
var
   nextrun : TDatetime;

nextrun := Now+DELAYTIME;
while True do
begin
   Sleep(1000);
   if Terminated then Exit;
   if Now > nextrun then
   begin
      nextrun := Now+DELAYTIME;
      // und hier findet nun die grosse Aktion statt
      ...
      if Terminated then Exit;
   end;
end;
Der Thread wacht ungefähr einmal in der Sekunde auf und schaut, ob er selbst terminiert wurde
und ob es schon Zeit ist, die Aktion auszuführen.
Nach der Aktion wird nochmals geschaut ob der Thread schon terminiert ist, denn wir möchten
ja nicht eine weitere Sekunde warten.
Andreas
  Mit Zitat antworten Zitat