Jedes Timer-Event startet eine Art Thread.
D.h. wenn du z.B. deinen TimerIterval auf eine Sekunde
Interval := 1000;
setzt und die Aktionen im TimerEvent länger als 1 Skunde dauern, wird der Timer dennoch erneut ausgelöst, obwohl die vorhergehende Aktion des Timers noch gar nicht beendet ist.
Das kann (u.U.) zu einer Reihe von
AV führen, Egal, ob du per Button den Timer auschaltest oder nicht, da das vorhergehende TimerEvent immernoch läuft.
Ich habe bis jetzt solche Aktionen ganz einfach gelöst.
PseudoCode:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
Timer1.enabled := FALSE;
fktMacheZeugsDieLangeZeitBraucht ();
Timer1.enabled := TRUE;
Und das muß funktionieren!
Somit wird der Timer beim Event abgeschalten, du kannst zeitintensive Operationen vornehmen und anschließend wird der Timer neu starten. Er wartet dann wieder 1 Sekunde und erledigt dann wieder seine Aufgabe.