タスクのアイドル状態
コンピューターがアイドル状態になったとき、タスクは複数の方法で処理できます。 これには、アイドル トリガーの定義や、タスクの開始時のアイドル状態の設定が含まれます。
アイドル状態の検出
Windows 7 では、タスク スケジューラは、コンピューターが 15 分ごとにアイドル状態であることを確認します。 タスク スケジューラは、ユーザーの不在とリソース消費量の不足という 2 つの条件を使用してアイドル状態をチェックします。 この期間中にキーボードまたはマウス入力がない場合、ユーザーは存在しないと見なされます。 最後の検出間隔の 90% を超える間、すべてのプロセッサとすべてのディスクがアイドル状態であった場合、コンピューターはアイドル状態と見なされます。 (例外は、ES_DISPLAY_REQUIRED フラグを設定するプレゼンテーションの種類のアプリケーションの場合です。このフラグは、ユーザーのアクティビティやリソースの消費量に関係なく、タスク スケジュールがシステムをアイドル状態と見なさないことを強制します)。
Windows 7 では、タスク スケジューラは、優先順位の低いスレッド (スレッド優先度 < 通常) が実行された場合でも、プロセッサをアイドルと見なします。
Windows 7 では、タスク スケジューラがコンピューターがアイドル状態であることを検出すると、サービスはユーザー入力がアイドル状態の終了をマークするまで待機します。
Windows 8 では、タスク スケジューラは、同じ一般的なユーザー不在チェックとリソース消費チェックを実行します。 ただし、タスク スケジューラは、オペレーティング システムの電源サブシステムを使用してユーザーのプレゼンスを検出します。 既定では、ユーザーはキーボードまたはマウス入力がない 4 分後に不在と見なされます。 リソース消費の検証時間は、ユーザーが存在する場合に 10 分間隔に短縮されます。 ユーザーが不在の場合、検証時間は 30 秒間隔に短縮されます。 タスク スケジューラは、次のイベントに対して追加のリソース消費チェックを行います。
- ユーザー プレゼンスの状態が変更されました
- AC/DC 電源の変更
- バッテリ レベルが変更されました (バッテリ使用時のみ)
上記のいずれかのイベントが発生すると、タスク スケジューラは、前回の検証以降にコンピューターのアイドル状態をテストします。 つまり、実際には、前回の検証以降に他の条件が満たされている場合、タスク スケジューラはユーザー不在が検出された直後にシステムをアイドル状態として宣言できます。
Windows 8 では、CPU と IO のしきい値は 80%に設定されます。
Windows 8 Server でアイドル状態を検出すると、タスク スケジューラはユーザーのプレゼンスまたは不在を考慮しません。 アイドル状態の終了をマークするために、タスク スケジューラはリソースの消費量を 90 分に 1 回修正します。
アイドル トリガーの定義
コンピューターがアイドル状態になったときにタスクを開始するには、アイドル トリガーを定義します。
アイドル トリガーは、トリガーの開始境界の後にコンピューターがアイドル状態に入った場合にのみ、タスク アクションをトリガーします。
アプリケーションは、IIdleTrigger インターフェイスを使用してアイドル トリガーを定義できます。
XML の読み取りまたは書き込みの場合、アイドル トリガーはタスク スケジューラ スキーマの IdleTrigger 要素によって指定されます。
アイドル状態のタスク設定
タスク設定を使用して、コンピューターがアイドル状態になったときにタスク スケジューラがタスクを処理する方法を定義できます。
次の図は、これらの異なるアイドル状態が相互にどのように関連しているかを示す 3 つのタイムラインを示しています。 図は、タスク トリガーがアクティブ化されたとき、またはタスクがオンデマンドで開始されたときに開始されます (既存のタスク制約 を無視要求する必要はありません)。
手記
期間の と WaitTimeout 設定は非推奨です。 これらは引き続きタスク スケジューラのユーザー インターフェイスに存在し、そのインターフェイス メソッドは有効な値を返す場合がありますが、使用されなくなりました。
アイドル状態のタイムラインする
アイドル状態の一覧を次に示します。
- アイドル状態の開始: コンピューターがアイドル状態になった時刻。
- アイドル終了: コンピューターがアイドル状態から移行する時刻。 コンピューターがアイドル状態になっている時間は、前に説明したアイドル時間とは無関係であることに注意してください。
アイドル待機とアイドル時間は非推奨になりました。
- アイドル待機: タスク トリガーがアクティブになった後、またはタスクがオンデマンドで開始された後に、タスク スケジューラがアイドル状態が発生するまで待機する時間。
- アイドル時間: タスクを開始する前にコンピューターをアイドル状態にしておく時間。
たとえば、コンピューターが 30 分間アイドル状態で、タスクが 10 分間アイドル状態になるまでタスクが待機している場合にのみ、タスクが開始されるのは、トリガーがアクティブ化される前にコンピューターが 25 分間アイドル状態であった場合のみです。 トリガーがアクティブ化されてから 5 分後にコンピューターがアイドル状態になった場合、タスクは開始されません。
既定では、DisallowStartIfOnBatteriesプロパティタスクは true に設定されています。つまり、タスク スケジューラ サービスは、コンピューターがバッテリ電源で実行されているときにアイドル 状態のトリガー (またはアイドル状態のトリガー) によってトリガーされるタスクを実行しません。 この動作を変更するには、DisallowStartIfOnBatteries プロパティを false に設定します。
タスクがアイドル トリガーによってトリガーされた場合、IIdleSettings インターフェイスの WaitTimeout プロパティ (スクリプト用の IdleSettings) は無視されます。
アプリケーションは、IIdleSettings のプロパティを設定し、IIdleTriggerインターフェイスすることで、アイドル状態を制御できます。
XML の読み取りまたは書き込みの場合、これらの条件はタスク スケジューラ スキーマの Settings 要素で指定されます。
アイドル状態の循環
コンピューターがアイドル状態で循環している場合は、次のアイドル状態を使用してタスクを終了して再起動できます。 タスクを終了して再起動するには、プロパティと要素の両方を True に設定する必要があります。
- アイドル状態が終了したときにタスクを終了するには、StopOnIdleEnd プロパティまたは StopOnIdleEnd 要素を True に設定します。
- コンピューターがアイドル状態に再び入ったときにタスクを再起動するには、RestartOnIdle プロパティまたは RestartOnIdle 要素を True に設定します。