Каскадная модель 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 необходимо создать с помощью конструктора, использующего параметр attachedControl или handle . Вторичный объект RealTimeStylus должен быть создан с помощью конструктора без аргументов.
- Вторичный объект RealTimeStylus должен быть единственным асинхронным подключаемым модулем в коллекции асинхронных подключаемых модулей основного объекта RealTimeStylus .
- Вторичный объект RealTimeStylus может быть присоединен только к одному первичному объекту RealTimeStylus одновременно. Если он добавляется ко второму первичному объекту RealTimeStylus , метод Add создает исключение, а вторичный объект RealTimeStylus не присоединяется ко второму первичному объекту RealTimeStylus .
- Поведение некоторых членов вторичного объекта RealTimeStylus изменяется. В следующей таблице описывается измененное поведение этих членов.
Член | Поведение |
---|---|
GetDesiredPacketDescription | Этот метод возвращает сведения из основного объекта RealTimeStylus . Если дополнительный объект RealTimeStylus не присоединен к основному объекту RealTimeStylus , этот метод возвращает значение по умолчанию. |
SetDesiredPacketDescription | Этот метод создает исключение InvalidOperationException . |
GetStyluses | Этот метод возвращает сведения из основного объекта RealTimeStylus . Если дополнительный объект RealTimeStylus не присоединен к основному объекту RealTimeStylus , этот метод возвращает пустой массив. |
Enabled | Получение этого свойства возвращает сведения из основного объекта RealTimeStylus . Если дополнительный объект RealTimeStylus не присоединен к основному объекту RealTimeStylus , то при получении этого свойства возвращается значение по умолчанию. Примечание: При задании этого свойства возникает исключение InvalidOperationException . |
WindowInputRectangle | Получение этого свойства возвращает сведения из основного объекта RealTimeStylus . Если дополнительный объект RealTimeStylus не присоединен к основному объекту RealTimeStylus , то при получении этого свойства возвращается значение по умолчанию. Примечание: При задании этого свойства возникает исключение InvalidOperationException . |
- Ожидается, что родительский объект RealTimeStylus перестанет работать, если дочерний объект RealTimeStylus — Disposed.