[Gelöst] Verfallen Timer Events?

6. Februar 2013 10:34

Hallo zusammen,

Ich starte über den NAS eine SingleInstance Codeunit, welche mittels Timer periodisch überprüft, ob in einem bestimmten Verzeichnis Textdateien vorhanden sind.
Ist mindestens 1 Textdatei vorhanden, wird diese verarbeitet und als Resultat eine neue Textdatei in ein anderes Verzeichnis geschrieben.

Ich möchte nun gerne wissen was geschieht, wenn die Verarbeitung mal länger dauert und das nächste Timer Ereignis eigentlich schon überfällig ist.
Sagen wir mal, die Periodizität ist 1 Sekunde, die Verarbeitung dauert aber 5 Sekunden. Dann wären die nachfolgenden 4 Ereignisse ja im "Stau".

Werden dann alle nachfolgenden Timer Ereignisse verspätet oder verfallen diese und kann dies zu Problemen führen?

Ich stelle mir vor, dass im beschriebenen Fall innerhalb 24 Stunden 86'400 Ereignisse (60x60x24) ausgeführt werden müssten.
Wenn nun aber ein paar Verarbeitungen länger dauern und die Ereignisse nicht verfallen sollten, würden sich die Anzahl der wartenden Ereignisse (im "Stau") immer mehr vergrössern.

Oder sollte ich in der Timer Funktion auf der ersten Zeile (vor der Verarbeitung)
Code:
NavTimerG.Enabled := FALSE;

eintragen und auf der letzten Zeile wieder
Code:
NavTimerG.Enabled := TRUE;

eintragen, damit der Timer während der Laufzeit unterbrochen wird?

Aber vielleicht mache ich mir da unnötige Sorgen?!?

So oder so bin ich dankbar für Eure Antworten und/oder Tipps zur Vermeidung allfälliger Probleme.

Merci, Beno
Zuletzt geändert von beno am 6. Februar 2013 12:10, insgesamt 1-mal geändert.

Re: Verfallen Timer Events?

6. Februar 2013 10:37

Sorry, kleiner Nachtrag:

Der Ursprung meiner Frage ist die folgende Information auf MSDN zum TimerInterval Property:

In some cases, the TimerInterval value specified may be too short to allow for complete execution of the OnTimer trigger before starting the next instance of the trigger. In this case, the number of overlapping instances is noted and the trigger is executed continuously for as long as necessary.

Problems with your computer's operating system can affect the performance of the timer.

Re: Verfallen Timer Events?

6. Februar 2013 11:10

beno hat geschrieben:Oder sollte ich in der Timer Funktion auf der ersten Zeile (vor der Verarbeitung)
Code:
NavTimerG.Enabled := FALSE;

eintragen und auf der letzten Zeile wieder
Code:
NavTimerG.Enabled := TRUE;

eintragen, damit der Timer während der Laufzeit unterbrochen wird?

Genau das macht der Standard, z.B. in Codeunit 448, Funktion HandleRequest. Am Ende der Funktion wird der Timer wieder enabled.

Ergo: Bitte nachmachen ;-)

[Gelöst] Verfallen Timer Events?

6. Februar 2013 12:09

Hallo Natalie,

In unserer vertikalen Lösung gibt es die CU 448 natürlich nicht... :wink:
Aber ich habe sie in der Cronus-DB gefunden und werde es genau so realisieren.

Vielen Dank!
Beno