2009-09-19 18 views
6

Attualmente sto implementando Quartz.net in una semplice applicazione che dovrebbe eseguire un pezzo di codice ogni (ad esempio) 5 secondi. Solo ora il codice richiede talvolta più di 5 secondi per essere completato.Quartz.net ripetere il lavoro all'intervallo dopo il completamento del lavoro

All'inizio ho riscontrato il problema che il codice è stato eseguito mentre lo stesso codice era ancora in esecuzione, l'ho risolto utilizzando l'interfaccia IStateFulJob anziché l'interfaccia IJob.

Ma quello che mi piacerebbe davvero realizzare è che il mio lavoro viene eseguito 5 secondi DOPO che il lavoro è stato completato, non 5 secondi dopo l'avvio del mio precedente lavoro.

I ofcourse può gestire l'evento che viene attivato quando il mio ascoltatore "sente" che il lavoro è pronto e riprogrammato il lavoro, ma mi chiedevo se non ci sono funzionalità standard per questo.

+1

'IStatefulJob' è stato dichiarato obsoleto. Utilizzare l'attributo 'DisallowConcurrentExecution' per non consentire più istanze di lavoro da eseguire contemporaneamente. –

risposta

4

Attualmente non esiste un metodo standard per ottenere questo risultato poiché Quartz.NET gioca sull'idea di avere un tempo di attivazione (calcolato in anticipo) e un polling predefiniti per il momento giusto per attivare il lavoro.

Il modo in cui hai descritto sarebbe stato il percorso più semplice. O programmare dal lavoro la prossima esecuzione o dall'ascoltatore.

+5

Questo è cambiato da allora fino ad ora? Questa era la risposta di quattro anni fa, è ancora la stessa oggi? –

Problemi correlati