GameInput の作業キュー
GameInput
API は時折、非同期の内部イベント (入力デバイスの接続/切断など) を処理する必要があります。 これらのイベントはあまり発生しません。 しかしながら、アプリケーションは、より頻繁なディスパッチが必要になる可能性があるコールバックを登録することもできます。 既定では、GameInput
は少し上の優先順位で実行されるワーカー スレッド (THREAD_PRIORITY_ABOVE_NORMAL
) を作成して、これらのイベントを処理します。
この操作が行われるタイミングおよびスレッド/プロセッサをより細かく制御する必要がある場合、アプリケーションは IGameInputDispatcher インターフェイスを介してこれらのイベントの処理を手動で制御できます。 このインターフェイスは、IGameInput インターフェイスの CreateDispatcher メソッドを呼び出して取得します。 このインターフェイスは、GameInput
の内部作業キューからの手動ディスパッチ操作に使用できる 2 つのメソッドを公開します。
Dispatch メソッドは、GameInput
の作業キューから保留中の操作をディスパッチするために使用されます (操作が存在する場合)。 アプリケーションはこのメソッドを定期的に呼び出すことができます。 または、ディスパッチャーの OpenWaitHandle メソッドから返されるハンドルを待機して、ディスパッチする必要がある操作がいつキューに入れられたかを検出できます。
アプリケーションでは、ディスパッチャー インターフェイスへの参照を保持している間は、操作のディスパッチを継続して制御することができます。 ディスパッチャー インターフェイスへの参照がすべて解放されると、GameInput
は内部ワーカー スレッドを使用してイベントを処理する方法に戻ります。