任務計劃程序空閒任務未在正確的時間視窗觸發

任務計劃程序空閒任務未在正確的時間視窗觸發

在我的 Windows 10 電腦中,我建立了以下任務排程器任務,並將空閒時的觸發時間設為 1 分鐘。我已經檢查並手動定時觸發,當沒有鍵盤或滑鼠操作時,它總是在 4 分鐘後觸發,而不是 1 分鐘。我已經手動計時超過 5 次,它總是在 4 分鐘後運行,而不是 1 分鐘。有什麼解釋嗎?我怎樣才能在 1 分鐘空閒時間而不是 4 分鐘後運行它?同樣的任務在 Windows 7 上根本不會觸發,如這裡所述https://superuser.com/questions/1568707/task-scheduler-on-idle-task-not-triggered-windows-7

我在微軟文件中註意到https://docs.microsoft.com/en-us/windows/win32/taskschd/task-idle-conditions它說了大約 4 分鐘,但我不明白,我不知道它是否相關?以及為什麼它在我的 Windows 7 機器上根本不起作用。

在此輸入影像描述

以下是我的計劃任務在任務計劃程序中的外觀:

在此輸入影像描述

在此輸入影像描述

在此輸入影像描述

在此輸入影像描述

在此輸入影像描述

這也是我的任務的 xml:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2019-11-20T15:43:06.6081219</Date>
    <Author>MyPC\MyUser</Author>
    <URI>\MyAppIdleTask</URI>
  </RegistrationInfo>
  <Triggers>
    <IdleTrigger>
      <Enabled>true</Enabled>
    </IdleTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-21-1004336348-1177238915-682003330-385281</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <Duration>PT1M</Duration>
      <WaitTimeout>PT0S</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>true</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\MyWinFormApp\MyWinForm.exe</Command>
    </Exec>
  </Actions>
</Task>

答案1

微軟基本上對 Windows 進行了程式設計:如果 4 分鐘內沒有產生使用者輸入,則電腦被視為空閒。

這意味著:Windows 開始偵測系統處於空閒狀態,但會忽略它 4 分鐘。確切原因尚不清楚,但可能是出於優化原因和可能的投訴。當系統在 4 分鐘後進入空閒狀態時,作業系統宣布:系統現在空閒了 4 分鐘,並且正在計數...

任務調度程序收到訊息,看到您已設定的任務,空閒 1 分鐘,並認為:哦,我們應該在 3 分鐘前開始您。現在就讓你開始吧。在 Windows 7 中,它不關心前 3 分鐘。

這給你兩個選擇。

  1. 接受總會有 4 分鐘的延遲
  2. 不要使用任務計劃程序。相反,您可以建立一個程式或腳本來測量活動並自行啟動任務。請注意,這會增加系統的開銷,如果編碼不正確,可能會損害效能。

我的建議是選擇選項 1。無論如何,你最初的問題是 30 分鐘。

相關內容