quartz.net – 如何防止石英作业多次运行

我正在使用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);
        }
    }
}
相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。