Общие рекомендации по потоковой работе
Ниже приведены общие рекомендации по использованию потоков при разработке для планшетных компьютеров.
- Потоки приложения и не приложения
- Вопросы производительности
- Рекомендации по потоковой работе с событиями
- Связанные темы
Потоки приложения и не приложения
Все события рукописного ввода создаются в отдельном потоке рукописного ввода с высоким приоритетом. Это позволяет плавно передавать рукописные фрагменты, даже если приложение работает медленно. Однако обработчики событий могут замедлять или блокировать отрисовку рукописного ввода.
Все события распознавания, создаваемые вызовами метода фонового распознавания, обрабатываются в отдельном потоке распознавания фона с нормальным приоритетом.
Все события мыши создаются в потоке main пользовательского интерфейса приложения.
Вопросы производительности
Обработчики событий
Программный интерфейс (API) платформы планшетного ПК имеет интерактивную модель для событий, а не модель уведомлений. Оставьте код в обработчиках событий коротким, чтобы сократить время блокировки отрисовки рукописного ввода. Сбор рукописных фрагментов планшетным компьютером не блокируется, но приложение не получает рукописный ввод, пока приложение заблокировано.
Свойство AutoRedraw
Если приложение выполняет пользовательскую отрисовку или приложение чувствительно к проблемам с рисованием, вы можете обработать перерисовку самостоятельно и задать свойству AutoRedraw значение false для объекта InkCollector , объекта InkOverlay или элемента управления InkPicture . Используйте события из следующей таблицы для обработки перерисовки.
Объект или элемент управления | Событие |
---|---|
InkCollector Объекта |
События Control.Invalidated и Control.Paint базового элемента управления. |
InkOverlay Объекта |
События Control.Invalidated и Control.Paint базового элемента управления. |
InkPicture Управления |
Унаследованные события Control.Invalidated и Control.Paint элемента управления InkPicture. |
Свойство DynamicRendering
Когда приложение выполняет пользовательскую отрисовку или если вам нужны данные, но не рукописный ввод, вы можете самостоятельно обработать ввод рукописного ввода и отключить отрисовку рукописного ввода в режиме реального времени, задав свойству DynamicRenderingзначение false для объекта InkCollector , объекта InkOverlay или элемента управления InkPicture .
Рекомендации по потоковой работе с событиями
События API платформы планшетных компьютеров вызываются в различных потоках.
События объектов InkCollector и InkOverlay
Большинство событий объектов InkCollector и InkOverlay возникают в потоке рукописного ввода. В потоке пользовательского интерфейса вызываются только события мыши для этих объектов. Например, для объекта InkCollector событие MouseDown вызывается в потоке пользовательского интерфейса, а событие CursorDown — в потоке рукописного ввода.
События коллекции объектов ink и strokes
События коллекции объектов Ink и Strokes могут поступать из потока рукописного ввода или потока пользовательского интерфейса. Когда приложение управляет объектом Ink или коллекцией Strokes , событие создается в потоке пользовательского интерфейса. Когда Объект InkCollector или InkOverlay обновляет объект Ink или коллекцию Strokes , в потоке рукописного ввода создается событие .
Элементы управления InkPicture и InkEdit работают в однопотоковом объекте (STA). Когда элемент управления InkPicture или InkEdit обновляет объект Ink или коллекцию Strokes , событие вызывается в потоке пользовательского интерфейса.
События распознавания
События распознавания вызываются в потоке пользовательского интерфейса или фоновом потоке распознавания.
- Метод Recognize элемента управления InkEdit вызывает событие Recognition (только управляемая библиотека) или RecognitionResult (только автоматизация) в потоке пользовательского интерфейса.
- Методы BackgroundRecognize и BackgroundRecognizeWithAlternates объекта RecognizerContext вызывают события Recognition и RecognitionWithAlternates в фоновом потоке распознавания.
События панели ввода с помощью пера
События PenInputPanel вызываются в потоке, в котором создается объект PenInputPanel.