일반 스레딩 고려 사항
다음은 태블릿 PC용으로 개발할 때 일반적인 스레딩 고려 사항입니다.
애플리케이션 및 비 애플리케이션 스레드
모든 잉크 이벤트는 우선 순위가 높은 별도의 잉크 스레드에서 생성됩니다. 이렇게 하면 애플리케이션이 느리게 실행되는 경우에도 잉크가 원활하게 흐를 수 있습니다. 그러나 이벤트 처리기는 잉크 렌더링 속도를 늦추거나 차단할 수 있습니다.
백그라운드 인식 메서드 호출에 의해 생성된 모든 인식 이벤트는 별도의 정상 우선 순위 백그라운드 인식 스레드에서 처리됩니다.
모든 마우스 이벤트는 애플리케이션의 기본 UI(사용자 인터페이스) 스레드에서 생성됩니다.
성능 고려 사항
이벤트 처리기
태블릿 PC 플랫폼 API(애플리케이션 프로그래밍 인터페이스)에는 알림 모델이 아닌 이벤트에 대한 대화형 모델이 있습니다. 잉크 렌더링이 차단되는 시간을 줄이기 위해 이벤트 처리기의 코드를 짧게 유지합니다. 태블릿 PC의 잉크 컬렉션은 차단되지 않지만 애플리케이션이 차단되는 동안 애플리케이션은 잉크를 받지 않습니다.
AutoRedraw 속성
애플리케이션이 사용자 지정 렌더링을 수행하거나 애플리케이션이 그리기 문제에 민감할 때 직접 다시 그리기를 처리하고 InkCollector 개체, InkOverlay 개체 또는 InkPicture 컨트롤에 대해 AutoRedraw 속성을 false로 설정할 수 있습니다. 다음 표의 이벤트를 사용하여 다시 그리기를 처리합니다.
개체 또는 컨트롤 | 이벤트 |
---|---|
Inkcollector 개체 |
기본 컨트롤의 Control.Invalidated 및 Control.Paint 이벤트입니다. |
Inkoverlay 개체 |
기본 컨트롤의 Control.Invalidated 및 Control.Paint 이벤트입니다. |
Inkpicture 컨트롤 |
InkPicture 컨트롤의 상속된 Control.Invalidated 및 Control.Paint 이벤트입니다. |
DynamicRendering 속성
애플리케이션이 사용자 지정 렌더링을 수행하거나 잉크가 아닌 정보를 원할 때 InkCollector 개체, InkOverlay 개체 또는 InkPicture 컨트롤에 대해 DynamicRendering 속성을 false로 설정하여 잉크 배치를 직접 처리하고 잉크의 실시간 렌더링을 끌 수 있습니다.
이벤트 스레딩 고려 사항
태블릿 PC 플랫폼 API 이벤트는 다양한 스레드에서 발생합니다.
InkCollector 및 InkOverlay 개체 이벤트
대부분의 InkCollector 및 InkOverlay 개체 이벤트는 잉크 스레드에서 발생합니다. 이러한 개체에 대한 마우스 이벤트만 UI 스레드에서 발생합니다. 예를 들어 InkCollector 개체의 경우 MouseDown 이벤트는 UI 스레드에서 발생하고 CursorDown 이벤트는 잉크 스레드에서 발생합니다.
잉크 개체 및 스트로크 컬렉션 이벤트
Ink 개체 및 Strokes 컬렉션 이벤트는 잉크 스레드 또는 UI 스레드에서 올 수 있습니다. 애플리케이션이 Ink 개체 또는 Strokes 컬렉션을 조작하면 이벤트가 UI 스레드에서 생성됩니다. InkCollector 또는 InkOverlay 개체가 Ink 개체 또는 Strokes 컬렉션을 업데이트하면 이벤트가 잉크 스레드에서 생성됩니다.
InkPicture 및 InkEdit 컨트롤은 STA(단일 스레드 아파트)에서 작동합니다. InkPicture 또는 InkEdit 컨트롤이 Ink 개체 또는 Strokes 컬렉션을 업데이트하면 UI 스레드에서 이벤트가 발생합니다.
인식 이벤트
인식 이벤트는 UI 스레드 또는 백그라운드 인식 스레드에서 발생합니다.
- InkEdit 컨트롤의 Recognize 메서드는 UI 스레드에서 Recognition(관리 라이브러리에만 해당) 또는 RecognitionResult(Automation에만 해당) 이벤트를 발생합니다.
- RecognizerContext 개체의 BackgroundRecognize 및 BackgroundRecognizeWithAlternates 메서드는 백그라운드 인식 스레드에서 Recognition 및 RecognitionWithAlternates 이벤트를 발생시킵니다.
펜 입력 패널 이벤트
PenInputPanel 이벤트는 PenInputPanel 개체가 만들어진 스레드에서 발생합니다.