我在Windows服务中使用Quartz进行作业调度。我需要在服务停止时或用户更改作业运行频率时关闭调度程序。由于我想等待执行的工作,我使用
scheduler.Shutdown(true);
我在两种情况下都得到例外:
Quartz.UnableToInterruptJobException:Job' myJob'不可能是 中断,因为它没有实现Quartz.IInterruptableJob
无法停止正在运行的服务,这非常糟糕。
但是,工作中断意味着不等待工作完成?那么,不是我想要的?虽然它可以解决当前的异常问题。
不会导致shutdown
崩溃的正确实施是什么?
如果我真的需要实施IInterruptableJob,这是怎么做到的?我没有找到关于此的教程,我不想做任何与标准关闭不同的事情。我正在使用标准调度程序工厂来创建调度程序:
schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler();