C# 石英触发器在第一个触发器忙时堆叠

C# 石英触发器在第一个触发器忙时堆叠,c#,quartz-scheduler,quartz.net,C#,Quartz Scheduler,Quartz.net,我有一个第二个触发器,带有和MISHIFREHandling指令Onothing: var trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithCronSchedule("0/1 0/1 0/1 1/1 * ? *", x => x.WithMisfireHandlingInstructionDoNothing())

我有一个第二个触发器,带有
和MISHIFREHandling指令Onothing

var trigger = TriggerBuilder.Create()
   .WithIdentity("trigger1", "group1")
   .WithCronSchedule("0/1 0/1 0/1 1/1 * ? *", x => x.WithMisfireHandlingInstructionDoNothing())
   .StartNow()
   .Build();
详细信息如下:

var jobDetail = JobBuilder.Create<TestJob>()
   .WithIdentity(JobKey.Create("TestJob")).Build();
以下是调度程序的初始化方式:

var scheduler = new StdSchedulerFactory().GetScheduler().GetAwaiter().GetResult();
scheduler.ScheduleJob(jobDetail, trigger);
scheduler.Start();
我得到的结果是:

正如你们所看到的,这项工作不是并行的,这是好的。但我不希望第二个作业触发器在前3次运行中处于休眠状态时堆叠起来。在3次运行后,所有堆叠的触发器都会立即相互触发。从2020年7月14日9:45:30开始,该作业至少被调用15次。这是我不想要的行为。我不希望在工作繁忙时这些电话堆积起来

我想我可以使用带有缺火处理指令的
来完成这项工作,但没有效果

我希望这是清楚的,谢谢你的帮助

编辑


可能和我得到的有关。我如何在C#中配置它?

正如您所指出的,问题在于缺火treshold

如果未通过此超时,则触发器不会被视为未触发,因此您需要减少它

您可以这样做:

NameValueCollection props = new NameValueCollection
{
    .....,
    { "quartz.jobStore.misfireThreshold", "1000" },
    .....
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
但这取决于配置quartz实例的方式

如果使用配置文件,则可以添加:

quartz.jobStore.misfireThreshold = 1000
NameValueCollection props = new NameValueCollection
{
    .....,
    { "quartz.jobStore.misfireThreshold", "1000" },
    .....
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
quartz.jobStore.misfireThreshold = 1000