级联 RealTimeStylus 模型

通过级联 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 对象。
  • 必须使用使用 attachedControlhandle 参数的构造函数创建主 RealTimeStylus 对象。 必须使用 no-argument 构造函数创建辅助 RealTimeStylus 对象。
  • 辅助 RealTimeStylus 对象必须是主要 RealTimeStylus 对象的异步插件集合中唯一的异步插件。
  • 辅助 RealTimeStylus 对象一次只能附加到一个主要 RealTimeStylus 对象。 如果将它添加到第二个主要 RealTimeStylus 对象, 则 Add 方法将引发异常,并且辅助 RealTimeStylus 对象不会附加到第二个主要 RealTimeStylus 对象。
  • 修改了某些次要 RealTimeStylus 对象成员的行为。 下表描述了这些成员的修改行为。
成员 行为
GetDesiredPacketDescription 此方法从主要 RealTimeStylus 对象返回信息。
如果辅助 RealTimeStylus 未附加到主要 RealTimeStylus 对象,则此方法返回默认值。
SetDesiredPacketDescription 此方法引发 InvalidOperationException 异常。
GetStyluses 此方法从主要 RealTimeStylus 对象返回信息。
如果辅助 RealTimeStylus 未附加到主要 RealTimeStylus 对象,则此方法返回空数组。
已启用 获取此属性将返回主要 RealTimeStylus 对象中的信息。
如果辅助 RealTimeStylus 未附加到主要 RealTimeStylus 对象,则获取此属性将返回默认值。
注意: 设置此属性将引发 InvalidOperationException 异常。
WindowInputRectangle 获取此属性将返回主要 RealTimeStylus 对象中的信息。
如果辅助 RealTimeStylus 未附加到主要 RealTimeStylus 对象,则获取此属性将返回默认值。
注意: 设置此属性将引发 InvalidOperationException 异常。
  • 当子 RealTimeStylus 为 Disposed 时,父 RealTimeStylus 对象应停止运行。