Quartz.net 如何在触发器上设置 MisfireInstruction

xer*_*him 2 .net c# quartz-scheduler quartz.net misfire-instruction

在 Quartz 1.0.x 中,可以通过简单地设置触发器上的 MisfireInstruction 来设置它:

trigger.MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;
Run Code Online (Sandbox Code Playgroud)

我们将 Quartz 版本升级到 2.3.2,现在不能再这样设置了,因为trigger.MisfireInstruction已经没有 setter 了。

现在如何在触发器上设置 MisfireInstruction?

我尝试使用 TriggerBuilder 重新创建触发器,如下所示:

trigger = trigger.GetTriggerBuilder()...
Run Code Online (Sandbox Code Playgroud)

但我也找不到 TriggerBuilder 上的 MisfireInstruction-Method。

谢谢你的帮助

Lef*_*tyX 5

我猜这种行为在第 2 版中发生了变化。
MisfireInstruction现在是只读属性,它是使用构建器设置的,如您在代码库中所见。

现在您可以设置MisfireInstruction使用TriggerBuilder

ITrigger myTrigger = TriggerBuilder
    .Create()
    .WithIdentity("trigger1", "myGroup")
    .WithCronSchedule("0 0 12 1/5 * ? *", x => x.WithMisfireHandlingInstructionDoNothing())
    .Build();
Run Code Online (Sandbox Code Playgroud)

您可以使用几个选项:

您可以使用以下选项:

  • 使用MisfireHandlingInstructionDoNothing
  • With MisfireHandlingInstructionFireAndProceed
  • WithMisfireHandlingInstructionIgnoreMisfires

可以在这里找到一篇很好的文章和很好的解释。