GameInput API는 입력 장치의 연결이나 연결 해제와 같은 내부 비동기 이벤트를 처리해야 하는 경우가 종종 있습니다. 이러한 이벤트는 자주 발생하지 않습니다. 그러나 애플리케이션이 등록한 콜백은 더 자주 디스패치되어야 할 수 있습니다. 기본적으로 GameInput은 이러한 이벤트를 처리하기 위해 약간 높은 우선순위(THREAD_PRIORITY_ABOVE_NORMAL)로 실행되는 워커 스레드를 생성합니다.
이 작업이 언제, 어떤 스레드/프로세서에서 수행되는지에 대해 더 세밀한 제어를 원하는 애플리케이션은 IGameInputDispatcher 인터페이스를 통해 이러한 이벤트 처리를 수동으로 제어할 수 있습니다. 이 인터페이스는 IGameInput 인터페이스의 CreateDispatcher 메서드를 호출하여 얻습니다. 이 인터페이스는 GameInput 내부 작업 큐에서 작업을 수동으로 디스패치하는 데 사용할 수 있는 두 가지 메서드를 제공합니다. Dispatch 메서드를 사용하여 GameInput 작업 큐에서 대기 중인 작업(있는 경우)을 디스패치합니다. 애플리케이션은 이 메서드를 주기적으로 호출할 수 있습니다. 또는 디스패처의 OpenWaitHandle 메서드에서 반환되는 핸들을 대기하여 디스패치해야 할 작업이 큐에 있는지 감지할 수 있습니다.
애플리케이션이 디스패처 인터페이스에 대한 참조를 보유하고 있는 동안에는 작업 디스패치의 제어권을 유지합니다. 디스패처 인터페이스에 대한 모든 참조가 해제되면 GameInput은 이벤트를 처리하기 위해 다시 내부 워커 스레드를 사용합니다.
