Каскадная модель RealTimeStylus
Каскадная модель RealTimeStylus позволяет использовать два объекта RealTimeStylus, каждый из которых выполняется в другом потоке. С помощью этой модели вы присоединяете вторичный объект RealTimeStylus к основному объекту RealTimeStylus. Дополнительный объект RealTimeStylus подключен как единственный асинхронный подключаемый модуль в коллекции асинхронных подключаемых модулей основного объекта RealTimeStylus.
Каскадная модель RealTimeStylus может оказаться полезной в следующих сценариях.
- Вы можете добавить определенные задачи, которые могут быть требовательными к вычислительным ресурсам, но при этом требуют доступа в режиме реального времени к потоку данных пера планшета, например распознавание многократных жестов, в синхронную коллекцию подключаемых модулей вторичного объекта RealTimeStylus.
- Вы можете распределить вычислительную нагрузку синхронных подключаемых модулей по двум потокам, уменьшая задержки в сборе рукописных данных на некоторых компьютерах планшетов.
На следующей схеме показан поток данных пера планшета через два каскадных объекта RealTimeStylus и их коллекции плагинов.
На этой схеме круг с буквой "A" представляет данные пера планшета, которые уже обработаны основным и вторичным объектами RealTimeStylus и помещены в очередь выходных данных вторичного объекта RealTimeStylus. Круг с буквой "B" представляет данные пера планшета, которые уже обработаны основным объектом RealTimeStylus и добавлены в очередь вывода основного объекта RealTimeStylus, и еще не отправлены в дополнительный объект RealTimeStylus. Круг с буквой "C" представляет данные пера планшета, которые в настоящее время обрабатываются основным объектом RealTimeStylus. Отправляется в коллекцию синхронных плагинов и размещается в выходной очереди. Пустой круг представляет позицию в выходной очереди, в которой добавляются будущие данные пера планшета.
Ограничения
Если вы используете конструкторпо умолчаниюRealTimeStylus, создайте объект RealTimeStylus, который может принимать входные данные только из другого объекта RealTimeStylus.
В следующем списке описываются ограничения, связанные с использованием каскадной модели RealTimeStylus.
- Можно использовать только два объекта RealTimeStylus: основной объект RealTimeStylus и дополнительный объект RealTimeStylus.
- Основной объект RealTimeStylus должен быть создан с помощью конструктора, использующего параметр прикрепленного Control или дескриптора. Вторичный объект RealTimeStylus должен быть создан конструктором без параметров.
- Дополнительный объект RealTimeStylus должен быть единственным асинхронным подключаемым модулем в коллекции асинхронных подключаемых модулей основного объекта RealTimeStylus.
- Дополнительный объект RealTimeStylus может быть присоединен только к одному основному объекту RealTimeStylus одновременно. Если он добавляется ко второму основному объекту RealTimeStylus, метод Add создает исключение, а вторичный объект RealTimeStylus не присоединяется ко второму основному объекту RealTimeStylus.
- Поведение некоторых вторичных членов объекта RealTimeStylus изменяется. В следующей таблице описывается измененное поведение этих элементов.
Член | Поведение |
---|---|
ПолучитьОписаниеЖелаемогоПакета | Этот метод возвращает сведения из основного объекта RealTimeStylus. Если вторичный RealTimeStylus не присоединен к основному объекту RealTimeStylus, этот метод возвращает значение по умолчанию. |
SetDesiredPacketDescription | Этот метод вызывает исключение InvalidOperationException. |
GetStyluses | Этот метод возвращает сведения из основного объекта RealTimeStylus. Если вторичный RealTimeStylus не присоединен к основному объекту RealTimeStylus, этот метод возвращает пустой массив. |
включено | Получение этого свойства возвращает сведения из основного объекта RealTimeStylus. Если вторичный RealTimeStylus не присоединен к основному объекту RealTimeStylus, то получение этого свойства возвращает значение по умолчанию. Примечание: При задании этого свойства возникает исключение InvalidOperationException. |
WindowInputRectangle | Получение этого свойства возвращает сведения из основного объекта RealTimeStylus. Если вторичный RealTimeStylus не присоединен к основному объекту RealTimeStylus, то получение этого свойства возвращает значение по умолчанию. Примечание: Установка этого свойства приведет к выбросу исключения InvalidOperationException. |
- Ожидается, что родительский объект RealTimeStylus прекратит функционировать, когда дочерний RealTimeStylus будет ликвидирован.