我有一个EventJob
类,它是从IJob
和EventScheduler
类派生的。
public class EventJob : IJob
{
public void Execute(IJobExecutionContext context)
{
//some code...
}
}
public class EventScheduler
{
public ITrigger GetEventTrigger()
{
DateTimeOffset startTime = DateBuilder.FutureDate(2, IntervalUnit.Second);
//Time Scheduling Setting
ITrigger eventTrigger = TriggerBuilder.Create()
.WithIdentity("EventTrigger")
.StartAt(startTime)
.WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())
.Build();
return eventTrigger;
}
public IJobDetail GetJobDetail()
{
//Job Definition Setting
IJobDetail eventJob = JobBuilder.Create<EventJob>()
.WithIdentity("EventJob")
.Build();
return eventJob;
}
}
因此,我需要添加其他作业,该作业在使用[DisallowConcurrentExecution]
配置完成当前作业之后立即运行。
我该怎么做?
答案 0 :(得分:0)
您可以使用IStatefulJob实现此目的-以所需的时间间隔运行两个作业,并且该作业不会同时运行。
http://quartznet.sourceforge.net/apidoc/
IStatefulJob实例遵循与常规规则略有不同的规则 IJob实例。关键区别在于它们关联的JobDataMap 在每次执行该作业后重新保留,从而保留 下一次执行的状态。另一个区别是有状态 不允许作业同时执行,这意味着新的触发器 在IJob.Execute方法完成之前发生的操作 延迟。
答案 1 :(得分:0)
最后,经过一番调查,我找到了实现此目标的好方法。
由@Vishal在How to do “sequential” Job Scheduling (Quartz?)中描述