Вопросы потоков для API StylusInput
Объект RealTimeStylus предназначен для предоставления доступа к потоку данных в режиме реального времени из пера планшета. Подключаемые модули, объекты, реализующие интерфейс IStylusSyncPlugin или IStylusAsyncPlugin , можно добавить в объект RealTimeStylus . Синхронные подключаемые модули обычно вызываются непосредственно объектом RealTimeStylus в потоке с высоким приоритетом, а асинхронные подключаемые модули обычно вызываются в потоке пользовательского интерфейса приложения. Создание или использование синхронных подключаемых модулей для задач, требующих доступа к потоку данных в режиме реального времени и не требующих вычислений, таких как фильтрация пакетов. Создание или использование асинхронных подключаемых модулей для задач, которым не требуется доступ к потоку данных в режиме реального времени, например сбор рукописного ввода.
Так как данные подключаемого модуля для асинхронной коллекции подключаемых модулей объекта RealTimeStylus помещается в очередь, асинхронные подключаемые модули могут получать данные до получения вызова метода RealTimeStylusDisabled , но после отключения объекта RealTimeStylus . Обратите внимание, что некоторые методы и свойства объекта RealTimeStylus создают исключение, если объект RealTimeStylus отключен.
Следующие методы интерфейса IStylusSyncPlugin могут вызывать в потоке, отличном от потока данных пера планшета.
- Методы RealTimeStylusEnabled и RealTimeStylusDisabled вызываются в потоке, который обновляет свойство Enabled объекта RealTimeStylus или добавляет или удаляет подключаемый модуль при включении объекта RealTimeStylus.
- Метод CustomStylusDataAdded вызывается в потоке, который вызывает метод AddCustomStylusDataToQueue объекта RealTimeStylus.
- Метод Error вызывается в потоке, в котором выполняется синхронный подключаемый модуль при возникновении исключения.
Для взаимодействия с приложением из синхронного подключаемого модуля используйте метод AddCustomStylusDataToQueue объекта RealTimeStylus и обработайте данные пользовательского пера в одном из ваших асинхронных подключаемых модулей. При синхронном вызове другого потока из синхронного подключаемого модуля можно заблокировать объект RealTimeStylus и тем самым заблокировать сбор рукописного ввода.
Некоторые задачи могут быть ресурсоемкими, но по-прежнему требуют доступа к потоку данных пера планшета в режиме реального времени, например для распознавания жестов с несколькими ударами. API StylusInput предоставляют каскадную модель RealTimeStylus , которая позволяет использовать два объекта RealTimeStylus , каждый из которых вызывает свои синхронные подключаемые модули из разных потоков. Дополнительные сведения о каскадной модели RealTimeStylus см. в разделе Каскадная модель RealTimeStylus.
Примечание
Невозможно прикрепить объект RealTimeStylus к окну или элементу управления в другом процессе.
Дополнительные сведения о рекомендациях по потоковой работе с планшетным компьютером в целом см. в разделе Рекомендации по потоковой работе с планшетным компьютером.