如何防止 quartz job multiple 运行
How to prevent quartz job multiple running
我正在使用 quartz.net 2.3
作业标有 DisallowConcurrentExecution 属性。当一个作业由 TriggerJob 手动启动时,如果它已经在进行中,它不会启动,没关系。但是当上一次执行完成时,它会立即再次开始。
如果在作业进行时触发它,是否可以防止将来执行?
是的。您可以检索作业的所有触发器,将它们与正在执行的触发器进行比较,如果它们是在它之后安排的,则取消安排作业(触发器将被删除)。
因此,根据您的工作:
public void Execute(IJobExecutionContext context)
{
var currentlyExecutingTrigger = context.Trigger;
var currentlyExecutingJobkey = context.JobDetail.Key;
var newTriggers = context.Scheduler.GetTriggersOfJob(key);
//if trigger was scheduled after currently executing trigger
foreach (var newTrigger in newTriggers)
{
if (newTrigger.StartTimeUtc >= trigger.StartTimeUtc)
{
//delete it
context.Scheduler.UnscheduleJob(newTrigger.Key);
}
}
}
如何防止作业同时触发?
Quartz.NET 2.x
实施 IJob 并使用 [DisallowConcurrentExecution] 属性修饰您的作业 class。阅读 DisallowConcurrentExecutionAttribute 的 API 文档了解更多信息。
你可以在文档中找到它
enter link description here
我想你正在寻找这个:
myJobTrigger.MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;
我没试过,但它似乎与 DisallowConcurrentExecution 属性配合使用效果很好
Other Whosebug Article describing this feature
我正在使用 quartz.net 2.3 作业标有 DisallowConcurrentExecution 属性。当一个作业由 TriggerJob 手动启动时,如果它已经在进行中,它不会启动,没关系。但是当上一次执行完成时,它会立即再次开始。 如果在作业进行时触发它,是否可以防止将来执行?
是的。您可以检索作业的所有触发器,将它们与正在执行的触发器进行比较,如果它们是在它之后安排的,则取消安排作业(触发器将被删除)。
因此,根据您的工作:
public void Execute(IJobExecutionContext context)
{
var currentlyExecutingTrigger = context.Trigger;
var currentlyExecutingJobkey = context.JobDetail.Key;
var newTriggers = context.Scheduler.GetTriggersOfJob(key);
//if trigger was scheduled after currently executing trigger
foreach (var newTrigger in newTriggers)
{
if (newTrigger.StartTimeUtc >= trigger.StartTimeUtc)
{
//delete it
context.Scheduler.UnscheduleJob(newTrigger.Key);
}
}
}
如何防止作业同时触发?
Quartz.NET 2.x
实施 IJob 并使用 [DisallowConcurrentExecution] 属性修饰您的作业 class。阅读 DisallowConcurrentExecutionAttribute 的 API 文档了解更多信息。
你可以在文档中找到它 enter link description here
我想你正在寻找这个:
myJobTrigger.MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;
我没试过,但它似乎与 DisallowConcurrentExecution 属性配合使用效果很好
Other Whosebug Article describing this feature