以下是針對平板電腦進行開發時的一般線程考慮。
應用程式和非應用程式線程
所有筆跡事件都會在個別的高優先順序筆跡線程上產生。 這可讓墨水流動順暢,即使應用程式運行緩慢也是如此。 不過,事件處理程式可能會減緩或阻止筆跡呈現。
背景辨識方法呼叫所產生的所有辨識事件都會在個別、一般優先順序的背景辨識線程上處理。
所有滑鼠事件都會在應用程式的主要使用者介面 (UI) 線程上產生。
效能考慮
事件處理程式
平板電腦平臺應用程式開發介面 (API) 具有事件互動式模型,而不是通知模型。 保持事件處理器中的程式代碼簡短,以減少封鎖筆跡渲染的時間。 平板電腦所收集的筆跡不會遭到封鎖,但您的應用程式在應用程式遭到封鎖時不會收到筆跡。
AutoRedraw 屬性
當您的應用程式執行自定義轉譯或應用程式對繪製問題敏感時,您可以自行處理重繪,並將 AutoRedraw 屬性設定為 falseInkCollector 物件、InkOverlay 物件,或 InkPicture 控件。 使用下表中的事件來處理重繪。
| 物件或控件 | 事件 |
|---|---|
|
InkCollector 物件 |
基礎控件的 Control.Invalidated 和 Control.Paint 事件。 |
|
InkOverlay 物件 |
基礎控件的 Control.Invalidated 和 Control.Paint 事件。 |
|
InkPicture 控件 |
InkPicture 控件繼承了 Control.Invalidated 和 Control.Paint 事件。 |
DynamicRendering 屬性
當您的應用程式執行自定義轉譯或想要資訊,但不是筆跡時,您可以自行處理筆跡的下架,並 藉由將 dynamicRendering 屬性設定為 false,InkCollector 物件,InkOverlay 物件,藉此關閉筆跡的實時轉譯, 或 InkPicture 控件。
事件線程考慮
平板電腦平台 API 事件會在各種執行緒上觸發。
InkCollector 和 InkOverlay 物件事件
大多數 InkCollector 和 InkOverlay 物件事件都是在筆跡線程上觸發的。 只有這些物件的滑鼠事件會在 UI 執行緒上引發。 例如,對於 InkCollector 物件,會在 UI 線程上引發 MouseDown 事件,而 ink 線程上會引發 CursorDown 事件。
Ink 物件與筆劃集合事件
Ink 物件和 Strokes 集合事件可能來自筆跡執行緒或 UI 執行緒。 當您的應用程式操作 Ink 物件或 Strokes 集合時,事件會在 UI 執行緒中產生。 當 InkCollector 或 InkOverlay 物件更新 Ink 物件或 Strokes 集合時,就會在筆跡線程中產生事件。
InkPicture 和 InkEdit 控制項在單執行緒單元(STA)中運作。 當 InkPicture 或 InkEdit 控件更新 Ink 物件或 Strokes 集合時,會在 UI 線程上引發 事件。
識別事件
辨識事件會在UI線程或背景辨識線程上引發。
- InkEdit 控件的 Recognize 方法會在 UI 線程上引發 辨識(僅限 Managed 連結庫)或 RecognitionResult(僅限自動化)事件。
- RecognizerContext 物件的 BackgroundRecognize 和 BackgroundRecognizeWithAlternates 方法會在背景辨識執行緒上觸發 Recognition 和 RecognitionWithAlternates 事件。
筆輸入面板事件
PenInputPanel 事件會在建立 PenInputPanel 物件的執行緒上引發。