Общие рекомендации по потоковой работе

Ниже приведены общие рекомендации по потоковой разработке для планшетного пк.

Потоки приложений и не приложений

Все события рукописного ввода создаются в отдельном высокоприоритетном потоке рукописного ввода. Это позволяет рукописным вводом плавно выполняться даже при медленном выполнении приложения. Однако обработчики событий могут замедлить или заблокировать отрисовку рукописного ввода.

Все события распознавания, созданные вызовами метода распознавания фона, обрабатываются в отдельном потоке распознавания фона с нормальным приоритетом.

Все события мыши создаются в основном потоке пользовательского интерфейса приложения.

Вопросы производительности

Обработчики событий

Интерфейс программирования приложений платформы планшетного ПК (API) имеет интерактивную модель для событий, а не модели уведомлений. Оставьте код в обработчиках событий короткими, чтобы сократить время блокировки отрисовки рукописного ввода. Коллекция рукописного ввода на планшетном пк не блокируется, но приложение не получает рукописный ввод во время блокировки приложения.

Свойство AutoRedraw

Когда приложение выполняет пользовательскую отрисовку или когда приложение чувствительно к проблемам с рисованием, вы можете самостоятельно обработать перерисовку и присвоить свойству AutoRedrawзначение false для объекта InkCollector , объекта InkOverlay или элемента управления InkPicture . Используйте события в следующей таблице для обработки переопределений.

Объект или элемент управления Событие
InkCollector Объекта
События Control.Invalidated и Control.Paint базового элемента управления.
InkOverlay Объекта
События Control.Invalidated и Control.Paint базового элемента управления.
InkPicture Управления
Унаследованные события элемента управления InkPictureControl.Invalidated и Control.Paint.

DynamicRendering Property

Когда приложение выполняет пользовательскую отрисовку или когда требуется информация, но не рукописный ввод, можно самостоятельно обработать установку рукописного ввода и отключить отрисовку рукописного ввода в режиме реального времени, задав свойству DynamicRenderingзначение false для объекта InkCollector , объекта InkOverlay или элемента управления InkPicture .

Рекомендации по потоку событий

События API платформы планшетного ПК создаются в различных потоках.

События объектов InkCollector и InkOverlay

Большинство событий объекта InkCollector и InkOverlay вызываются в потоке рукописного ввода. В потоке пользовательского интерфейса создаются только события мыши для этих объектов. Например, для объекта InkCollector событие MouseDown вызывается в потоке пользовательского интерфейса, а событие CursorDown вызывается в потоке рукописного ввода.

События коллекции рукописного ввода и росчерков

События коллекции ink и Strokes могут поступать из потока рукописного ввода или потока пользовательского интерфейса. Когда приложение управляет объектом Ink или коллекцией Strokes , событие создается в потоке пользовательского интерфейса. Когда объект InkCollector или inkOverlay обновляет объект Ink или коллекцию Strokes , событие создается в потоке рукописного ввода.

Элементы управления InkPicture и InkEdit работают в однопоточной квартире (STA). Когда элемент управления InkPicture или InkEdit обновляет объект ink или коллекцию Strokes , событие вызывается в потоке пользовательского интерфейса.

События распознавания

События распознавания создаются в потоке пользовательского интерфейса или фоновом потоке распознавания.

События панели ввода пера

События PenInputPanel создаются в потоке, в котором создается объект PenInputPanel.

Microsoft.Ink.InkCollector.DynamicRendering

Microsoft.Ink.InkOverlay.DynamicRendering

Microsoft.Ink.InkPicture.DynamicRendering

Microsoft.Ink.InkCollector.AutoRedraw

Microsoft.Ink.InkOverlay.AutoRedraw

Microsoft.Ink.InkPicture.AutoRedraw