后重新启动INTERVALL我有一个项目,我用TopShelf
和TopShelf.Quartz
如何强制quartz.net作业完成
继this example我建设我的工作与
s.ScheduleQuartzJob(q =>
q.WithJob(() => JobBuilder.Create<MyJob>().Build())
.AddTrigger(() => TriggerBuilder.Create()
.WithSimpleSchedule(builder => builder
.WithIntervalInSeconds(5)
.RepeatForever())
.Build())
);
这触发我的工作即使前一次仍在运行,每五秒钟一次。我真正想做的是开始一项工作,完成后等待五秒钟,然后重新开始。这是可能的还是我必须实现我自己的逻辑(例如通过一个静态变量)。
我想提到DisallowConcurrentExecution作为一种可能的解决方案,但你的问题是“*完成后*等待5秒钟,然后重新开始”。 – stuartd 2014-09-23 13:53:34
是的,我的解释有点误导。我的工作可以在零秒和一分钟之间运行(取决于要处理的数据量)。使用'DisallowConcurrentExecution',我的作业每五秒执行一次,或者在执行后立即执行超过五秒钟。在我了解这个属性之前,我认为最好的解决方案是告诉Quartz在工作完成后开始填充,而不是在解雇工作之后开始填充。对于我来说,属性方法已经足够了,但我非常肯定,JobListener方法会派上用场,因为我打算向我的应用程序添加更多作业。 – 2014-09-23 14:15:48
另请注意,您需要从具体类型'JobBuilder.Create'而不是'JobBuilder.Create '创建作业,以便拾取属性。 –
fearofawhackplanet
2014-10-15 17:23:10