2016-05-12 68 views
0

我正在Quartz中使用Windows服務中的作業調度。當服務停止或用戶更改作業的運行頻率時,我需要關閉調度程序。因爲我想等待執行的工作,我用當前作業完成後關閉石英調度程序

scheduler.Shutdown(true); 

我在這兩種情況下得到異常:

Quartz.UnableToInterruptJobException:招聘「myJob」不能是 中斷,因爲它不執行Quartz.IInterruptable工作

正在運行的服務不能停止,這是非常糟糕的。

但是工作中斷意味着不等待工作完成?那麼,不是我想要的?雖然它會解決當前的異常問題。

什麼是正確的實現不會導致shutdown崩潰?

如果我真的需要實施IInterruptableJob,這是如何完成的?我沒有找到關於這個的教程,我真的不想做任何不同於標準關機的東西。我使用的是標準的調度工廠調度創造:

schedulerFactory = new StdSchedulerFactory(); 
scheduler = schedulerFactory.GetScheduler(); 

回答

1

我發現如何中斷的工作......我根本就實現IInteruptableJob接口,與interrupt方法什麼都不做。 This後幫了我很多!