Quartz.net中'DisallowConcurrentExecution'的确切含义是什么

时间:2014-04-30 14:22:18

标签: c# quartz.net job-scheduling

我有一个Quartz.net Job,其定义如下。

    [PersistJobDataAfterExecution]
    [DisallowConcurrentExecution]
    public class AdItemsJob : IJob, IInterruptableJob
    {

        public void Execute(IJobExecutionContext context)
        { 
         // Job execution logic,

        }
   }

我用DisallowConcurrentExecution属性装饰了作业 我对此属性的了解,我们无法同时运行同一作业的多个实例。这里的多个实例是什么意思。?
AddItemsJob具有不同键的两个作业是否被称为相同实例或不同实例。?
具有不同密钥的两个作业是否可以同时执行。

1 个答案:

答案 0 :(得分:14)

作业实例是具有唯一键的作业。因此,拥有 type AddItemsJob的作业可以有两个带有AddItemsJob.Admin和AddiItemsJobs.Legacy键的实例。并发保护来自每个作业密钥 - 如果使用重叠触发器定义上述两个作业,它们可以同时运行。

在单个密钥后面定义单个作业将不会同时运行,即使有多个触发器具有与之关联的重叠计划。