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