Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.028 Beiträge
 
Delphi 12 Athens
 
#9

AW: Fehlermeldung "Nicht genügend Timer verfügbar"

  Alt 13. Jul 2023, 16:58
Ein weiteres Problom könnte sein, dass der Timer bereits wieder ausgelöst wird, während die Timerroutine noch nicht vollständig abgearbeitet ist.
Ich glaube, das ist technisch nicht möglich, da weitere Timer-Events erst beim nächsten Abarbeiten der Message Queue auftauchen würden. Es kann also schon sein, dass nach Abarbeiten des Timer-Events bereits ein weiterer Event ansteht, aber eben erst nach dem Beenden des Events. Die Timer-Messages werden ja nur nach Anfrage erzeugt. Solange also niemand (auch nicht indirekt) innerhalb des Event-Codes ein PeekMessages aufruft, sollte auch keine neue Timer-Message in der Queue landen.

Das ist ja auch einer der Gründe, warum man kein Application.ProcessMessages aufrufen soll, denn dann könnte tatsächlich der Eventhandler rekursiv aufgerufen werden. Dann nutzt aber das Disablen des Timers auch nicht wirklich viel, da das ein Re-Entering nicht 100%ifg verhindern kann - es könnten ja schon weitere Timer-Messges in der Queue sein. Das Disable/Enable erzeugt aber unnötig weitere KillTimer/SetTimer Aufrufe und belastet das System eigentlich mehr als es hilft.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat