任务空闲条件

当计算机进入空闲状态时,可以通过多种方式处理任务。 这包括定义空闲触发器或设置任务启动时的空闲条件。

检测空闲状态

在 Windows 7 中,任务计划程序每隔 15 分钟验证计算机是否处于空闲状态。 任务计划程序使用两个条件检查空闲状态:用户缺席和资源消耗不足。 如果在此期间没有键盘或鼠标输入,则认为用户不存在。 如果所有处理器和所有磁盘在上次检测间隔的 90% 以上处于空闲状态,则计算机被视为空闲状态。 (设置ES_DISPLAY_REQUIRED标志的任何演示文稿类型应用程序都会例外。此标志强制任务计划不认为系统处于空闲状态,而不考虑用户活动或资源消耗。)

在 Windows 7 中,即使低优先级线程 (线程优先级<正常执行) ,任务计划程序也会将处理器视为空闲状态。

在 Windows 7 中,当任务计划程序检测到计算机处于空闲状态时,服务仅等待用户输入来标记空闲状态的结束。

在Windows 8中,任务计划程序执行相同的常规用户缺席和资源消耗检查。 但是,任务计划程序依赖于操作系统电源子系统来检测用户状态。 默认情况下,在没有键盘或鼠标输入四分钟后,用户被视为缺席。 当用户存在时,资源消耗验证时间缩短为 10 分钟。 用户离开时,验证时间缩短为 30 秒。 任务计划程序对以下事件进行额外的资源消耗检查:

  • 用户状态已更改
  • AC/DC 电源已更改
  • 电池电量仅在电池) 时更改 (

当上述任何事件发生时,任务计划程序将测试计算机自上次验证时间以来的空闲状态。 实际上,这意味着,如果自上次验证时间以来满足其他条件,任务计划程序可能会在检测到用户缺席后立即将系统声明为空闲状态。

在Windows 8中,CPU 和 IO 阈值设置为 80%。

在Windows 8服务器中检测空闲状态时,任务计划程序不会考虑用户存在或缺席。 若要标记空闲状态的结束,任务计划程序将在 90 分钟内修改资源消耗量一次。

定义空闲触发器

当计算机通过定义空闲触发器进入空闲状态时,可以启动任务。

如果计算机在触发器的启动边界后进入空闲状态,则空闲触发器将仅触发任务操作。

应用程序可以使用 IIdleTrigger 接口定义空闲触发器。

如果读取或写入 XML,则空闲触发器由任务计划程序架构的 IdleTrigger 元素指定。

空闲条件的任务设置

任务设置可用于定义当计算机进入空闲状态时任务计划程序如何处理任务。

下图提供了三个可能的时间线,这些时间线显示了这些不同的空闲条件如何相互关联。 请注意,当任务触发器被激活或任务按需启动时 (,而不请求 忽略现有任务约束) 时,该图将启动。

注意

已弃用 持续时间WaitTimeout 设置。 它们仍存在于任务计划程序用户界面中,并且其接口方法可能仍返回有效值,但它们不再使用。

idle condition timeline

以下列表描述了空闲条件。

  • 空闲开始时间:计算机进入空闲状态的时间。
  • 空闲结束:计算机退出空闲状态的时间。 请注意,计算机处于空闲状态的时间量与前面描述的空闲持续时间时间无关。

已弃用空闲等待和空闲持续时间。

  • 空闲等待:任务计划程序在激活任务触发器或按需启动任务后等待空闲状态发生的时间量。
  • 空闲持续时间:启动任务之前,希望计算机处于空闲状态的时间量。

例如,如果任务设置为仅当计算机空闲 30 分钟时启动,并且任务等待计算机空闲 10 分钟,则仅当计算机在激活触发器前 25 分钟时,该任务才会在 5 分钟内启动。 如果计算机在激活触发器 5 分钟后进入空闲状态,则不会启动该任务。

默认情况下,任务 DisallowStartIfOnBatteries 属性设置为 true,这意味着任务计划程序服务不会运行由空闲触发器触发的任务, (或处于空闲条件的触发器在电池供电时) 。 可以通过将 DisallowStartIfOnBatteries 属性设置为 false 来更改此行为。

如果任务由空闲触发器触发,则忽略 IIdleSettings 接口的 WaitTimeout 属性 (IdleSettings 脚本) 。

应用程序可以通过设置 IIdleSettingsIIdleTrigger 接口中的属性来控制空闲条件。

如果读取或写入 XML,则会在任务计划程序架构的设置元素中指定这些条件。

循环空闲条件

如果计算机正在循环进入和退出空闲状态,则可以使用以下空闲条件终止并重启任务。 若要终止和重启任务,必须将属性和元素都设置为 True: