Quartz.NET设置MisfireInstruction

我正在使用Quartz.NET在C#中工作,并且在CronTrigger上设置misfire指令时遇到问题。 我正在运行安装了Quartz DB的SQL后端。 我有以下代码适用于创建作业和运行调度程序。

IScheduler _scheduler; IJobDetail job; ISchedulerFactory sFactory; ICronTrigger trig; sFactory = new StdSchedulerFactory(); _scheduler = sFactory.GetScheduler(); _scheduler.Start(); job = JobBuilder.Create().WithIdentity("testJob", "testGroup").Build(); trig = (ICronTrigger) TriggerBuilder.Create().WithIdentity("testTrigger", "testGroup").WithCronSchedule("0/10 * * * * ?").Build(); int i = trig.MisfireInstruction; _scheduler.ScheduleJob(job, trig); 

我可以访问的唯一misfireinstruction是trig.MisfireInstruction ,它是一个int,我无法设置它。 在CronScheduleBuilder中还有一些以WithMisfireHandlingInstruction开头的函数。

您的触发器创建应该是这样的:

 trig = (ICronTrigger)TriggerBuilder .Create() .WithIdentity("testTrigger", "testGroup") .WithCronSchedule("0/10 * * * * ?", x => x.WithMisfireHandlingInstructionFireAndProceed()) .Build(); 

你可以使用这些选项:

  • WithMisfireHandlingInstructionDoNothing
  • WithMisfireHandlingInstructionFireAndProceed
  • WithMisfireHandlingInstructionIgnoreMisfires

你可以在这里找到一个很好的解释。