Wie unterbreche ich in Lazarus einen Timer?

1 Antwort

Nicht so einfach. Ein Timer ist kein eigener Thread, sondern läuft im MainThread der Anwendung. Während die Timerfunktion läuft passiert nix Anderes, wenn du nicht dafür sorgst.

Du kannst in der Funktion, die der Timer ausführt, an passenden Stellen eine Abbruchbehandlung einfügen, also z.b.

Application.ProcessMessages;
if (not Timer1.enabled) then begin
   // Aufräumen
   exit;
end;

Das Application.ProcessMessages sorgt dafür, dass erstmal ausstehende andere Ereignisse, wie z.B. ein Klick auf einen Abbrechen-Button, überhaupt verarbeitet werden. Wenn dann der den Timer deaktiviert, sorgt der Code danach für den Abbruch der Timerfunktion. Aber das musst du eben selbst einbauen.

Wenn wirklich etwas parallel passieren soll, schaue dir TThread an...

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin