使用元件物件模型 (COM) 和自動化時,下列平板電腦線程考慮是特定的。
線程安全性
除了 InkPicture 和 InkEdit 控件之外,Tablet PC 對像是執行緒安全並標示為這兩種。 藉由被標示為兩者,它們可以在單執行緒單元(STA)或多執行緒單元(MTA)中執行。
Windows 表單會使用 STA 模型,因為 Windows 表單是以原生 Win32 視窗為基礎,而同時使用 Win32 視窗和 COM 的執行緒預期會使用單一執行緒 Apartment。
STA 和 MTA 應用程式
如果您的應用程式在 MTA 中執行,或使用自由線程封送處理器 (FTM),您必須撰寫安全線程程式代碼;不過,您可以藉由這麼做來改善特定事件處理效能問題。
InkCollector 和 InkOverlay
您的應用程式不應該直接在筆跡線程中釋放對 InkCollector 或 InkOverlay 物件的最終參考,從而銷毀該物件。 相反地,應用程式應該從應用程式線程釋放 InkCollector 或 InkOverlay 物件。
注意: 標示為 MTA 或使用 FTM 的應用程式,允許從筆跡線程直接呼叫應用程式的 Apartment,可以直接從筆跡線程釋放對 InkCollector 或 InkOverlay 物件的最終參考:不過,這會導致無法復原的應用程式失敗。
事件匯入器
如果您的應用程式未使用 FTM,而且物件及其事件接收器是在不同的 Apartment 中建立,則事件會在用於服務事件接收器的線程上執行。
事件處理程式內的例外狀況
從平板電腦事件處理程式內擲出的例外狀況會被處理掉,並且其餘部分或您的應用程式將無法看到。 同樣地,HRESULT 值不會從平板電腦事件處理程序傳播。 如果使用 COM 層的應用程式擲回例外狀況,背景線程就會終止,而且例外狀況將會遺失。 不會呼叫其他事件處理程式。
相關主題