9

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

IScheduler _scheduler;
IJobDetail job;
ISchedulerFactory sFactory;
ICronTrigger trig;

sFactory = new StdSchedulerFactory();

_scheduler = sFactory.GetScheduler();
_scheduler.Start();

job = JobBuilder.Create<Test>().WithIdentity("testJob", "testGroup").Build();
trig = (ICronTrigger) TriggerBuilder.Create().WithIdentity("testTrigger", "testGroup").WithCronSchedule("0/10 * * * * ?").Build(); int i = trig.MisfireInstruction;

_scheduler.ScheduleJob(job, trig);

我可以访问的唯一错误指令是trig.MisfireInstruction哪个是 int,我无法设置它。还有一些从WithMisfireHandlingInstructionCronScheduleBuilder 开始的函数。

4

1 回答 1

17

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

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

您可以使用以下选项:

  • With MisfireHandlingInstructionDoNothing
  • With MisfireHandlingInstructionFireAndProceed
  • With MisfireHandlingInstructionIgnoreMisfires

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

于 2012-11-28T09:35:13.910 回答