StylusInput API에 대한 스레딩 고려 사항
RealTimeStylus 개체는 태블릿 펜에서 데이터 스트림에 실시간으로 액세스할 수 있도록 설계되었습니다. 플러그 인, IStylusSyncPlugin 또는 IStylusAsyncPlugin 인터페이스를 구현하는 개체를 RealTimeStylus 개체에 추가할 수 있습니다. 동기 플러그 인은 일반적으로 우선 순위가 높은 스레드에서 RealTimeStylus 개체에 의해 직접 호출되는 반면, 비동기 플러그 인은 일반적으로 애플리케이션의 UI(사용자 인터페이스) 스레드에서 호출됩니다. 데이터 스트림에 대한 실시간 액세스가 필요하고 패킷 필터링과 같이 계산적으로 의미 없는 작업에 동기 플러그 인을 만들거나 사용합니다. 잉크 컬렉션과 같이 데이터 스트림에 실시간으로 액세스할 필요가 없는 작업에 비동기 플러그 인을 만들거나 사용합니다.
RealTimeStylus 개체의 비동기 플러그 인 컬렉션에 대한 플러그 인 데이터가 큐에 대기되므로 비동기 플러그 인은 RealTimeStylusDisabled 메서드에 대한 호출을 받기 전에 데이터를 수신할 수 있지만 RealTimeStylus 개체가 비활성화된 후에는 데이터를 수신할 수 있습니다. RealTimeStylus 개체가 비활성화된 경우 RealTimeStylus 개체의 메서드 및 속성 중 일부는 예외를 throw합니다.
다음 IStylusSyncPlugin 인터페이스 메서드는 태블릿 펜 데이터 스레드 이외의 스레드에서 를 호출할 수 있습니다.
- RealTimeStylusEnabled 및 RealTimeStylusDisabled 메서드는 RealTimeStylus 개체의 Enabled 속성을 업데이트하거나 RealTimeStylus 개체를 사용하는 동안 플러그 인을 추가하거나 제거하는 스레드에서 호출됩니다.
- CustomStylusDataAdded 메서드는 RealTimeStylus 개체의 AddCustomStylusDataToQueue 메서드를 호출하는 스레드에서 호출됩니다.
- Error 메서드는 예외를 throw할 때 동기 플러그 인이 실행되는 스레드에서 호출됩니다.
동기 플러그 인에서 애플리케이션과 상호 작용하려면 RealTimeStylus 개체의 AddCustomStylusDataToQueue 메서드를 사용하고 비동기 플러그 인 중 하나에서 사용자 지정 스타일러스 데이터를 처리합니다. 동기 플러그 인에서 다른 스레드를 동기적으로 호출하는 경우 RealTimeStylus 개체를 차단하여 잉크 컬렉션을 차단할 수 있습니다.
특정 작업은 계산이 어려울 수 있지만 다중 입력 제스처 인식과 같이 태블릿 펜의 데이터 스트림에 대한 실시간 액세스가 필요할 수 있습니다. StylusInput API는 서로 다른 스레드에서 동기 플러그 인을 호출하는 두 개의 RealTimeStylus 개체를 사용할 수 있는 연계 RealTimeStylus 모델을 제공합니다. 계단식 RealTimeStylus 모델에 대한 자세한 내용은 Cascaded RealTimeStylus 모델을 참조하세요.
참고
다른 프로세스에서는 RealTimeStylus 개체를 창이나 컨트롤에 연결할 수 없습니다.
일반적으로 태블릿 PC의 스레딩 고려 사항에 대한 자세한 내용은 태블릿 PC 스레딩 고려 사항을 참조하세요.