2009-09-19 15 views
6

Actualmente estoy implementando Quartz.net en una aplicación simple que debe ejecutar un fragmento de código cada (por ejemplo) 5 segundos. Solo que ahora el código a veces tarda más de 5 segundos en completarse.Trabajo de repetición de Quartz.net en el intervalo después de completar el trabajo

Al principio tuve el problema de que el código se ejecutó mientras el mismo código aún se estaba ejecutando. Lo solucioné usando la interfaz IStateFulJob en lugar de la interfaz IJob.

Pero lo que realmente me gustaría lograr es que mi trabajo se ejecute 5 segundos DESPUÉS de que se complete el trabajo, no 5 segundos después de que se haya iniciado mi trabajo anterior.

Por supuesto que podría manejar el evento que se desencadena cuando mi oyente "escucha" que el trabajo está listo y vuelve a programar el trabajo, pero me preguntaba si no hay ninguna funcionalidad estándar para esto.

+1

'IStatefulJob' ha quedado obsoleto. Utilice el atributo 'DisallowConcurrentExecution' para no permitir que se ejecuten varias instancias de trabajos al mismo tiempo. –

Respuesta

4

Actualmente no hay una forma estándar de lograr esto, ya que Quartz.NET juega con la idea de tener un tiempo de disparo predefinido (calculado de antemano) y un sondeo para el momento adecuado para activar el trabajo.

La forma que describió sería la ruta más fácil. O programe desde el trabajo la próxima ejecución o desde el oyente.

+5

¿Ha cambiado esto desde entonces hasta ahora? Esta fue la respuesta hace cuatro años, ¿sigue siendo el mismo hoy? –

Cuestiones relacionadas