私のコードは、すべての条件とトリガーが設定された Win 7 タスク スケジューラでタスクを正常に作成します。以下のスニペットは、アイドル トリガーを設定しています。タスク スケジューラですべての設定を確認できるので、正しく作成されていることがわかります。タスク スケジューラで [実行] をクリックすると、プログラムが期待どおりに起動するので、アクションも正しいことがわかります。
Task.Settings.RunOnlyIfIdle = true;
Task.Settings.IdleSettings.StopOnIdleEnd = false;
// The amount of time that the computer must be in an idle state before the task is run.
Task.Settings.IdleSettings.IdleDuration = TimeSpan.FromMinutes(1);
// Value that indicates the amount of time that the Task Scheduler will wait for an idle condition to occur
Task.Settings.IdleSettings.WaitTimeout = TimeSpan.FromHours(2);
// Set up the Idle trigger.
trigger = Task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_IDLE);
スケジュールされた時間とそれ以上待つと、タスクは開始されますが、ステータスが Queuedのままになり、PC を長時間使用しないままにしても、プログラムは実行されません。
タスクは実行されるのに、アイドル状態が満たされないように見えるのはなぜですか?
Windows がアイドル状態を処理する方法に関するこのページを見つけました。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383561(v=vs.85).aspx