StylusInput API 的线程处理注意事项
RealTimeStylus 对象旨在提供对平板电脑笔中数据流的实时访问。 插件,实现 IStylusSyncPlugin 或 IStylusAsyncPlugin 接口的对象可以添加到 RealTimeStylus 对象。 同步插件通常由高优先级线程上的 RealTimeStylus 对象直接调用,而异步插件通常在应用程序的用户界面 (UI) 线程上调用。 为需要实时访问数据流且在计算上不要求的任务(如数据包筛选)创建或使用同步插件。 为不需要实时访问数据流的任务(如墨迹收集)创建或使用异步插件。
由于 RealTimeStylus 对象的异步插件集合的插件数据已排队,因此异步插件可能会在接收对其 RealTimeStylusDisabled 方法的调用之前接收数据,但在禁用 RealTimeStylus 对象之后接收数据。 请注意,如果 RealTimeStylus 对象被禁用,则 某些 RealTimeStylus 对象的方法和属性会引发异常。
以下 IStylusSyncPlugin 接口方法可以在非平板电脑笔数据线程的线程上调用 。
- 在更新 RealTimeStylus 对象的 Enabled 属性或在启用 RealTimeStylus 对象时添加或删除插件的线程上调用 RealTimeStylusEnabled 和 RealTimeStylusDisabled 方法。
- 在调用 RealTimeStylus 对象的 AddCustomStylusDataToQueue 方法的线程上调用 CustomStylusDataAdded 方法。
- 当同步插件引发异常时,将在运行同步插件的线程上调用 Error 方法。
若要从同步插件与应用程序交互,请使用 RealTimeStylus 对象的 AddCustomStylusDataToQueue 方法,并在其中一个异步插件中处理自定义触笔数据。如果从同步插件对另一个线程进行同步调用,可能会阻止 RealTimeStylus 对象,从而阻止墨迹收集。
某些任务在计算上可能要求很大,但仍需要实时访问平板电脑笔的数据流,例如用于多击手势识别。 StylusInput API 提供级联 RealTimeStylus 模型,允许使用两个 RealTimeStylus 对象,每个对象从不同的线程调用其同步插件。 有关级联 RealTimeStylus 模型的详细信息,请参阅 级联 RealTimeStylus 模型。
注意
不能将 RealTimeStylus 对象附加到不同进程中的窗口或控件。
有关平板电脑线程处理注意事项的详细信息,请参阅 平板电脑线程处理注意事项