次のタブレット PC スレッドに関する考慮事項は、コンポーネント オブジェクト モデル (COM) とオートメーションを使用する場合に固有です。
スレッド セーフ
InkPicture コントロールと InkEdit コントロールを除き、Tablet PC オブジェクトはスレッド セーフであり、両方としてマークされます。 両方のマークを付けることで、シングル スレッド アパートメント (STA) またはマルチスレッド アパートメント (MTA) で実行できます。
Windows フォームはネイティブ Win32 ウィンドウに基づいており、Win32 ウィンドウと COM の両方を使用するスレッドではシングルスレッド アパートメントを使用することが想定されているため、Windows フォームでは STA モデルが使用されます。
STA および MTA アプリケーション
アプリケーションが MTA で実行されている場合、またはフリー スレッド マーシャラー (FTM) を使用している場合は、スレッド セーフなコードを記述する必要があります。ただし、そうすることで、特定のイベント処理のパフォーマンスの問題を改善できます。
InkCollector と InkOverlay
アプリケーションは InkCollector または InkOverlay オブジェクトへの最終的な参照を解放しないでください。したがって、オブジェクトはインク スレッドから直接破棄されます。 代わりに、アプリケーションは、アプリケーション スレッドから InkCollector または InkOverlay オブジェクトを解放する必要があります。
注意: MTA とマークされているアプリケーションまたは FTM を使用するアプリケーション。これにより、インク スレッドからアプリケーションのアパートメントへの直接呼び出しが可能になり、 InkCollector オブジェクトまたは InkOverlay オブジェクトへの最終的な参照をインク スレッドから直接解放できます。ただし、これにより、回復不能なアプリケーションエラーが発生します。
イベント シンク
アプリケーションが FTM を使用せず、オブジェクトとそのイベント シンクが別のアパートメントに作成されている場合、イベントはイベント シンクにサービスを提供するスレッドで実行されます。
イベント ハンドラー内の例外
Tablet PC のイベント ハンドラー内で発生した例外は内部で処理され、他の部分やアプリケーションには表示されません。 同様に、HRESULT 値は Tablet PC イベント ハンドラーから伝達されません。 COM レイヤーを使用するアプリケーションが例外をスローすると、バックグラウンド スレッドが終了し、例外が失われます。 追加のイベント ハンドラーは呼び出されません。
関連トピック