Ich retriggere den Timer eigentlich fast immer in seiner OnTimer Routine.
So kann man den auch schön definiert abschalten und aufräumen lassen.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
DoTick;
if FTimerIsRunning then
begin
Timer1.Enabled := True;
end
else
begin
CleanupAfterStop;
end;
end;
So kann das was im OnTimer gemacht werden soll in Ruhe arbeiten, ohne Gefahr dass ein OnTimer ein zweites Mal reintriggert.
Insbesondere bei schnellen Ticks hilft das, damit es nicht aus dem Tritt gerät wenn DoTick mal 100ms und mal 500ms dauern kann.
Das geht natürlich auf insgesamt Kosten der Timergenauigkeit, aber die ist für mich sowieso meistens nicht relevant,
deshalb das TDateTime um die wirkliche Zeit zu bekommen.
Wenn ich hochpräzise Timer brauche dann nehme ich sowieso was Anderes.