什么是普遍接受的取消Quartz.Net工作链的方法?

时间:2015-10-09 02:43:22

标签: .net quartz-scheduler quartz.net quartz.net-2.0

我使用Listeners将一系列Quartz.Net作业链接在一起:

  • 工作A执行...
    • 调用JobAListener.JobWasExecuted()方法,然后执行Job B
  • 工作B执行...
    • 调用JobBListener.JobWasExecuted()方法,然后执行Job C
  • 等......

让我们说Job A失败的方式是我不想重写这份工作,而我想要缩短工作链的其余部分。换句话说,我想在作业A失败后停止执行链的其余部分。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

作业监听器上的JobWasExecuted()方法应该将IJobExecutionContextJobExecutionException作为Quartz提供的参数。我只是在为JobA触发JobExecutionException时检查JobWasExecuted()是否为空。如果它不为null,则表示在解除JobA时发生了未处理的异常,并且您无法触发JobB。这实际上将是"短路"呼叫链。

这假定未处理的异常是您确定JobA是否失败的标准(您没有指定)。如果超出此范围需要检查,您可以随时查看IJobExecutionContext的属性以获取更多信息。

相关问题