当前作业完成后关闭 Quartz 调度程序

Shutdown Quartz scheduler after current jobs complete

我在 Windows 服务中使用 Quartz 进行作业调度。当服务停止或用户更改作业运行频率时,我需要关闭调度程序。因为我想等待执行作业,所以我使用

scheduler.Shutdown(true);

我在这两种情况下都遇到了异常:

Quartz.UnableToInterruptJobException: Job 'myJob' can not be interrupted, since it does not implement Quartz.IInterruptableJob

无法停止 运行 服务,这很糟糕。

但是作业中断意味着不等待作业完成?所以,不是我想要的?虽然它会解决当前的异常问题。

不导致 shutdown 崩溃的正确实施是什么?

如果我真的需要实现 IInterruptableJob,这是怎么做到的?我没有找到关于此的教程,而且我真的不想做任何与标准关机不同的事情。我正在使用标准调度程序工厂来创建调度程序:

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

我找到了中断作业的方法...我只需要实现 IInteruptableJob 接口,而 interrupt 方法什么也不做。 post 对我帮助很大!