2009-09-19 5 views
6

Ich implementiere derzeit Quartz.net in einer einfachen Anwendung, die jeden Code (zB) 5 Sekunden lang ausführen soll. Nur jetzt dauert der Code manchmal mehr als 5 Sekunden.Quartz.net Wiederholungsauftrag im Intervall nach Abschluss des Jobs

Zuerst hatte ich das Problem, dass der Code ausgeführt wurde, während der gleiche Code noch lief, ich habe dies mit der IStateFulJob-Schnittstelle anstelle der IJob-Schnittstelle behoben.

Aber was ich wirklich gerne erreichen würde, ist, dass mein Job 5 Sekunden NACH dem Job ausgeführt wird, nicht 5 Sekunden nachdem mein vorheriger Job gestartet wurde.

Ich könnte natürlich das Ereignis behandeln, das ausgelöst wird, wenn mein Hörer "hört", dass der Job fertig ist und den Job neu einplane, aber ich frage mich, ob es dafür keine Standardfunktionalität gibt.

+1

'IStatefulJob' ist veraltet. Verwenden Sie das Attribut "DisallowConcurrentExecution", um zu verhindern, dass mehrere Jobinstanzen gleichzeitig ausgeführt werden. –

Antwort

4

Derzeit gibt es keinen Standard Weg dies zu erreichen, da Quartz.NET auf der Idee spielt, eine vordefinierte (vorher berechnete) Feuerzeit und Abfrage für den richtigen Zeitpunkt zu haben, um die Arbeit auszulösen.

Die Art und Weise, wie Sie beschrieben haben, wäre der einfachste Weg. Entweder planen Sie den Job von der nächsten Ausführung oder vom Listener.

+5

Hat sich das bis jetzt geändert? Das war die Antwort vor vier Jahren, ist es heute noch so? –

Verwandte Themen