Tengo un trabajo programado que tiene un intervalo de repetición por cada 5 minutos. Está funcionando bien.¿Cómo hacer que el proceso Quartz.NET sea sincronizado?
Pero tengo una situación en la que mi primer trabajo no se completa en 5 minutos y está comenzando un segundo trabajo (como estaba programado para 5 minutos).
No quiero hacer eso, solo un trabajo debería estar funcionando a la vez. ¿Cómo puedo hacer eso?
Este es mi código:
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = schedFact.GetScheduler();
Trigger emailTrigger = TriggerUtils.MakeMinutelyTrigger(5);
emailTrigger.StartTimeUtc = TriggerUtils.GetEvenMinuteDate(DateTime.UtcNow);
emailTrigger.Name = "EmailTrigger";
JobDetail emailJobDetail = new JobDetail("EmailJob", null, typeof(EmailJob));
sched.ScheduleJob(emailJobDetail, emailTrigger);
sched.Start();
Ni siquiera tiene que esperar; puede probar y agarrar el mecanismo de sincronización. Si falla, entonces el trabajo debe regresar para que esté completo y listo. Si lo agarra, entonces debe procesarlo. No hay "alcance". Por supuesto, el hecho de que omitió debe registrarse y uno debe volver a evaluar su programación en ese momento. – casperOne