Einzelnen Beitrag anzeigen

CCRDude

Registriert seit: 9. Jun 2011
661 Beiträge
 
FreePascal / Lazarus
 
#27

AW: Nach Timer.Enable killt sich das Programm

  Alt 8. Sep 2021, 17:27
[QUOTE=Rupert;1494313]
Suf duesem Computer läuft nichts. Kein Backup, kein Virenscanner.
Du hast also bewusst den Windows Defender, VSS und weitere Systemdienste deaktiviert? Ist zwar noch ein XP, trotzdem schon ein Multitasking-Betriebssystem.

Timer werden in fast jeder Anwendung verwendet.
Timer verwende ich auch gelegentlich, aber nicht nicht in diesem Kontext. Für wiederkehrendes Daten-I/O wie hier verwendet man eher Threads als Timer. Kaum etwas ist nerviger als nicht reagierende UIs, weil der Entwickler Last im Hauptthread erzeugt.

"Timen" kann man dann immer noch mit WaitForSingleObject mit definiertem Timeout auf ein Terminate-Event, um die Schleife im Falle des Programmschließens sofort zu beenden.

Ansonsten, um einen Mehrfachaufruf der Timer-Methode wirklich zu verhindern: mit TCriticalSection wrappen, dann kann er nicht nochmal rein, bevor er raus ist.

Ansonsten hilft es manchmal auch schon, die Logik nicht in der Timer-Methode zu haben, sondern von dort per PostMessage an eine andere Methode die eigentliche Ausführung zu triggern.
  Mit Zitat antworten Zitat