タスクのアイドル状態
タスクは、コンピューターがアイドル状態になったときに、いくつかの方法で処理できます。 これには、アイドル トリガーの定義や、タスクの開始時のアイドル状態の設定が含まれます。
アイドル状態の検出
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 サーバーでアイドル状態を検出する場合、タスク スケジューラはユーザーの存在または不在を考慮しません。 アイドル状態の終了をマークするために、タスク スケジューラはリソース消費量を 90 分に 1 回修正します。
アイドル状態のトリガーの定義
コンピューターがアイドル状態になったときに、アイドル 状態のトリガーを定義することで、タスクを開始できます。
アイドル 状態のトリガーは、コンピューターがトリガーの開始境界の後にアイドル状態に入った場合にのみ、タスク アクションをトリガーします。
アプリケーションでは、 IIdleTrigger インターフェイスを使用してアイドル トリガーを定義できます。
XML の読み取りまたは書き込みの場合、アイドル トリガーはタスク スケジューラ スキーマの IdleTrigger 要素によって指定されます。
アイドル状態のタスク設定
タスク設定を使用して、コンピューターがアイドル状態になったときにタスク スケジューラがタスクを処理する方法を定義できます。
次の図は、これらの異なるアイドル状態が相互にどのように関係するかを示す 3 つのタイムラインを示しています。 図は、タスク トリガーがアクティブ化されたとき、またはタスクがオンデマンドで開始されたときに開始されます ( 既存のタスク制約を無視するように要求する必要はありません)。
Note
[期間] と [WaitTimeout] の設定は非推奨です。 これらは引き続きタスク スケジューラ のユーザー インターフェイスに存在し、そのインターフェイス メソッドは有効な値を返す可能性がありますが、使用されなくなりました。
次の一覧では、アイドル状態について説明します。
- アイドル状態の開始: コンピューターがアイドル状態になった時刻。
- アイドル状態の終了: コンピューターがアイドル状態から切り替わる時刻。 コンピューターがアイドル状態になっている時間は、前に説明したアイドル時間とは無関係であることに注意してください。
アイドル待機とアイドル時間は非推奨になりました。
- アイドル待機: タスク トリガーがアクティブ化された後、またはタスクがオンデマンドで開始された後に、タスク スケジューラがアイドル状態が発生するまで待機する時間。
- アイドル時間: タスクを開始する前に、コンピューターがアイドル状態になっている時間。
たとえば、コンピューターが 30 分間アイドル状態で、タスクが 10 分間アイドル状態になるのを待機している場合にのみタスクが開始されるように設定されている場合、トリガーがアクティブ化される前にコンピューターが 25 分間アイドル状態になっている場合にのみ、タスクは 5 分で起動します。 トリガーがアクティブ化されてから 5 分後にコンピューターがアイドル状態になった場合、タスクは開始されません。
既定では、タスク DisallowStartIfOnBatteries プロパティは true に設定されています。つまり、コンピューターがバッテリ電源で実行されている場合、タスク スケジューラ サービスはアイドル 状態のトリガー (またはアイドル状態のトリガー) によってトリガーされるタスクを実行しません。 この動作を変更するには、 DisallowStartIfOnBatteries プロパティを false に設定します。
タスクがアイドル 状態のトリガーによってトリガーされた場合、IIdleSettings インターフェイス (スクリプト用の IdleSettings) の WaitTimeout プロパティは無視されます。
アプリケーションでは、 IIdleSettings インターフェイスと IIdleTrigger インターフェイスでプロパティを設定することで、アイドル状態 を 制御できます。
XML の読み取りまたは書き込みの場合、これらの条件はタスク スケジューラ スキーマの Settings 要素で指定されます。
循環アイドル状態
コンピューターがアイドル状態を循環している場合は、次のアイドル状態を使用してタスクを終了して再起動できます。 タスクを終了して再起動するには、プロパティと要素の両方を True に設定する必要があります。
- アイドル状態が終了したときにタスクを終了するには、 StopOnIdleEnd プロパティまたは StopOnIdleEnd 要素を True に設定します。
- コンピューターがアイドル状態に戻ったときにタスクを再起動するには、RestartOnIdle プロパティまたは RestartOnIdle 要素を True に設定します。