共用方式為


COM 和自動化執行緒的考量

使用元件物件模型 (COM) 和自動化時,下列平板電腦線程考慮是特定的。

線程安全性

除了 InkPictureInkEdit 控件之外,Tablet PC 對像是執行緒安全並標示為這兩種。 藉由被標示為兩者,它們可以在單執行緒單元(STA)或多執行緒單元(MTA)中執行。

Windows 表單會使用 STA 模型,因為 Windows 表單是以原生 Win32 視窗為基礎,而同時使用 Win32 視窗和 COM 的執行緒預期會使用單一執行緒 Apartment。

STA 和 MTA 應用程式

如果您的應用程式在 MTA 中執行,或使用自由線程封送處理器 (FTM),您必須撰寫安全線程程式代碼;不過,您可以藉由這麼做來改善特定事件處理效能問題。

InkCollector 和 InkOverlay

您的應用程式不應該直接在筆跡線程中釋放對 InkCollectorInkOverlay 物件的最終參考,從而銷毀該物件。 相反地,應用程式應該從應用程式線程釋放 InkCollectorInkOverlay 物件。

注意: 標示為 MTA 或使用 FTM 的應用程式,允許從筆跡線程直接呼叫應用程式的 Apartment,可以直接從筆跡線程釋放對 InkCollectorInkOverlay 物件的最終參考:不過,這會導致無法復原的應用程式失敗。

事件匯入器

如果您的應用程式未使用 FTM,而且物件及其事件接收器是在不同的 Apartment 中建立,則事件會在用於服務事件接收器的線程上執行。

事件處理程式內的例外狀況

從平板電腦事件處理程式內擲出的例外狀況會被處理掉,並且其餘部分或您的應用程式將無法看到。 同樣地,HRESULT 值不會從平板電腦事件處理程序傳播。 如果使用 COM 層的應用程式擲回例外狀況,背景線程就會終止,而且例外狀況將會遺失。 不會呼叫其他事件處理程式。

C++ 事件接收範例

一般線程考慮

託管程式庫執行緒考量