触发器内部和设置选项卡下的“如果运行时间超过则停止任务”有什么区别?

触发器内部和设置选项卡下的“如果运行时间超过则停止任务”有什么区别?

当我安排任务Windows 任务计划程序,我可以在任务触发器内或“设置”选项卡内设置“如果运行时间超过则停止任务”。

如果我在触发器内部设置它,它不会自动填充到设置中,所以我认为它是不同的,但是有什么区别,哪一个更好用?

答案1

我认为@sajawikio 说得对 - 每个触发器的“停止任务”选项允许您设置多个触发器,每个触发器都有自己的最大运行时间限额,其中“设置”选项卡上的选项全局适用于任务的所有实例。

示例:在一项任务上,我设置了多个触发器。一个是每周一午夜运行,另一个是每周四午夜运行。有两种方法(实际上还有更多方法,但我们在这里只使用“停止任务...”选项)可以设置任务,这样就不会出现重叠。

  1. 我可以将整个任务(在“设置”选项卡下)的最大运行时间为 3 天。这可以以最简单的方式防止任务重叠。

  2. 我可以为每个任务分别设置最大运行时间(在“触发器”对话框中)。星期一的任务将设置为 3 天,星期四的任务将设置为 4 天。这样,星期四的任务就可以多运行一天(如果需要的话),同时仍可防止重叠。

如果此选项设置为两个都触发器屏幕设置选项卡?这需要进行一些测试,但有三种可能性:

  1. 每个触发器选项完全覆盖全局选项。
  2. 全局选项完全覆盖每个触发器的选项。
  3. 为当前任务设置的最短持续时间获胜。

我查看了帮助文件,没有看到任何关于此问题的说明。为了使您的任务以可靠且可预测的方式执行,我建议您选择其中一种方法 - 切勿同时使用这两种方法。

答案2

感谢@Iszi 的回答。我在我的电脑上测试了这两个“ExecutionTimeLimit”选项并得到了这样的结论。我的电脑的操作系统是 Windows 10 Professional。

MSDN 文档,我们可以看到这些选项都是在一些COM接口中,这些接口的实现需要桌面Windows版本高于或等于Windows Vista。

结论如下(时间跨度以分钟为单位):

+----------------------------+---------------------------------+-----------------+
| Trigger.ExecutionTimeLimit | TaskSettings.ExecutionTimeLimit | Realistic Limit |
+----------------------------+---------------------------------+-----------------+
| 4                          | 3                               | 4               |
| 1                          | 3                               | 1               |
| Not Set                    | 3                               | 3               |
| 1                          | Not Set                         | INFINITE        |
+----------------------------|---------------------------------+-----------------+

顺便说一句:任务间隔是每 5 分钟启动一次新任务实例,因此在上述大多数测试用例中它们不会重叠。

从结果来看,我只能说:

  1. 如果两个选项都设置了,则触发器中的选项将生效,而设置中的选项将被绕过。

  2. 如果仅设置了设置中的选项,则它将会生效。

  3. 如果仅设置了 Trigger 中的选项(未设置 ITaskSetting::ExecutionTimeLimit),则没有选项生效,任务调度系统永远不会尝试终止任务,无论任务运行多长时间。

因此,如果您希望系统自动尝试终止运行时间过长的任务,您至少应该启用“ExecutionTimeLimit”选项任务设置.如果您还在任务的特定触发器中启用了该选项,则触发器的选项将取代任务设置中的选项,并对该触发器启动的任务生效。

相关内容