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

What's the generally accepted means of cancelling a Quartz.Net job chain?

我有一系列 Quartz.Net 使用监听器链接在一起的作业:

假设作业 A 以这样的方式失败,我不想重新启动该作业,而是想缩短作业链的其余部分。换句话说,我想在作业 A 失败后停止执行链的其余部分。

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

作业侦听器上的 JobWasExecuted() 方法应该采用 IJobExecutionContextJobExecutionException 作为 Quartz 提供的参数。当为 JobA 触发 JobWasExecuted() 时,我只是检查 JobExecutionException 是否为空。如果它不为空,那么您就知道在启动 JobA 时发生了未处理的异常,您可以简单地不启动 JobB。这实际上将 "short circuit" 调用链。

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