Quartz.Net 中长时间运行的作业
我在 Quartz.Net 中有一个工作,它触发得非常频繁,有时会运行很长时间,如果该工作已经在运行,我该如何取消触发器?
I've a job in Quartz.Net which triggers quite frequently, and sometimes runs for long, how do i cancel the trigger if the job is already running?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
更标准的方法是使用 IInterruptableJob,请参阅 http://quartznet.sourceforge.net/faq。 html#howtostopjob 。当然,这只是 if (!jobRunning)... 的另一种说法。
The more standard way is to use IInterruptableJob, see http://quartznet.sourceforge.net/faq.html#howtostopjob . Of course this is just another way to say if (!jobRunning)...
您能否在作业开始时设置某种全局变量(jobRunning=true)并在作业完成后将其恢复为 false?
然后当触发器触发时,只需运行代码 if(jobRunning==false)
Could you not just set some sort of global variable (jobRunning=true) when the job starts and revert it to false once it's finished?
Then when the trigger fires, just run your code if(jobRunning==false)
现在,您可以在触发器中使用“WithMisfireHandlingInstructionIgnoreMisfires”,并在作业中使用 [DisallowConcurrentExecution] 属性。
Nowadays you could use "WithMisfireHandlingInstructionIgnoreMisfires" in your trigger and use [DisallowConcurrentExecution] attribute in your job.
您的应用程序可以在启动时将其自身从作业列表中删除,并在关闭时将其自身插入。
Your app could remove itself from the job list on startup and insert itself on shutdown.
这是我的实现(使用 MarkoL 之前给出的链接中的建议)。
我只是想节省一些打字时间。
我是 Quartz.NET 的新手,所以请对下面的内容持保留态度。
This was my implementation (using the suggestions at the link that MarkoL gave earlier).
I'm just trying to save some typing.
I'm pretty new at Quartz.NET, so take the below with a train of salt.