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.