Eine Frage habe ich noch zu diesem ExecuteTimes.
In ExecuteTimed ist eine while-Schleife. Was aber, wenn ich eine Aufgabe habe die von Anfang bis Ende nur einmal durchlaufen soll und wo ich keine Schleife benötige?
Würde man in diesem Falle den Thread dafür erzeugen und sofort terminieren?
In ExecuteTimed steht der Code, der nach Ablauf eines Intervalls ausgeführt werden soll, also dass, was man bei einem gewöhnlichen Timer die Ereignisroutine für OnTimer schreibt. Da macht man dann auch keine Schleife, um auf das nächste Timerereignis zu warten, sondern macht dort nur das, was beim Timerereignis ausgeführt werden soll.
Oder anders: Du musst bei der Nutzung des TTimerThread keine eigene Schleife programmieren.
Statt Deinem ursprünglichen
Delphi-Quellcode:
procedure TMyNormalThread.Execute;
begin
while not Terminated do
begin
Sleep(1000);
if 1 = 2 then
// viel zu tun
end;
end;
machst Du nun
Delphi-Quellcode:
procedure TTimerThread.ExecuteTimed;
begin
if 1 = 2 then
// viel zu tun
end;