Поделиться через


Рекомендации по работе с потоками для API StylusInput

Объект RealTimeStylus предназначен для обеспечения доступа в режиме реального времени к потоку данных из планшетного пера. Подключаемые модули, объекты, реализующие интерфейс IStylusSyncPlugin или IStylusAsyncPlugin, можно добавить в объект RealTimeStylus. Синхронные подключаемые модули обычно вызываются непосредственно объектом RealTimeStylus в потоке с высоким приоритетом, а асинхронные подключаемые модули обычно вызываются в потоке пользовательского интерфейса (UI) приложения. Создавайте или используйте синхронные плагины для задач, которым требуется доступ к потоку данных в режиме реального времени и которые не требуют больших вычислительных ресурсов, таких как фильтрация пакетов. Создайте или используйте асинхронные подключаемые модули для задач, которые не требуют доступа в режиме реального времени к потоку данных, например сбора рукописных данных.

** Поскольку данные плагина для асинхронной коллекции плагинов объекта RealTimeStylus помещаются в очередь, асинхронные плагины могут получать данные до того, как будет вызван метод RealTimeStylusDisabled, но после того, как объект RealTimeStylus будет отключен. Обратите внимание, что некоторые из методов и свойств объекта RealTimeStylus вызывают исключение, если объект RealTimeStylus отключен.

Следующие методы интерфейса IStylusSyncPlugin могут вызывать поток, отличный от потока данных пера планшета.

  • Методы RealTimeStylusEnabled и RealTimeStylusDisabled вызываются в потоке, который обновляет свойство Enabled объекта RealTimeStylus или добавляет или удаляет подключаемый модуль, пока объект RealTimeStylus включен.
  • Метод CustomStylusDataAdded вызывается в том же потоке, что и метод RealTimeStylus объекта AddCustomStylusDataToQueue.
  • Метод Error вызывается в потоке, на котором работает синхронный плагин, когда возникает исключение.

Чтобы взаимодействовать с приложением из синхронного подключаемого модуля, используйте метод AddCustomStylusDataToQueue объекта RealTimeStylus и обрабатывайте пользовательские данные пера в одном из асинхронных подключаемых модулей. При синхронном вызове другого потока из синхронного подключаемого модуля можно заблокировать объект RealTimeStylus и таким образом заблокировать коллекцию рукописного ввода.

Некоторые задачи могут быть вычислительными, но по-прежнему требуют доступа в режиме реального времени к потоку данных пера планшета, например для многострочного распознавания жестов. API StylusInput предоставляет каскадную модель RealTimeStylus, позволяющую использовать два объекта RealTimeStylus, каждый из которых вызывает свои синхронные подключаемые модули из разных потоков. Дополнительные сведения об каскадной модели RealTimeStylus см. в каскадной модели RealTimeStylus.

Заметка

Невозможно подключить объект RealTimeStylus к окну или элементу управления в другом процессе.

 

Дополнительные сведения о потоковом использовании планшетного компьютера в целом см. в статье Общие соображения по потокам для планшетного ПК