仅在执行上一个作业后才执行作业

Sib*_*Guy 4 quartz.net

我有一份计划每分钟执行的工作:

        var trigger = TriggerBuilder.Create().
            StartNow().
            WithSimpleSchedule(x => x.WithIntervalInMinutes(1).RepeatForever()).
            Build();
Run Code Online (Sandbox Code Playgroud)

但有时需要执行超过一分钟的工作.因此,下一个工作将开始,直到上一个完成,并导致一些冲突.

是否有可能告诉Quartz.Net计划每分钟运行一个作业,但前提是前一个作业已经完成?

小智 14

如果您使用的是Quartz 2.x,则需要使用DisallowConcurrentExecutionAttribute来装饰您的作业类.像下面这样的东西:

[Quartz.DisallowConcurrentExecutionAttribute()]
public class HelloJob : IJob
...
Run Code Online (Sandbox Code Playgroud)

这在常见问题解答"如何让作业同时发射?"中解决.http://www.quartz-scheduler.net/documentation/faq.html