シングル スレッドアパートメントとマルチスレッド アパートメントの両方をサポートするクライアントまたはサーバーには、1 つのマルチスレッド アパートメントがあり、すべてのスレッドがフリースレッドとして初期化され、1 つ以上のシングルスレッド アパートメントが含まれます。 インターフェイス ポインターは、アパートメント間でマーシャリングする必要がありますが、アパートメント内でマーシャリングせずに使用できます。 シングル スレッド アパートメント内のオブジェクトの呼び出しは、COM によって同期されます。 マルチスレッド アパートメント内のオブジェクトへの呼び出しは、COM によって同期されません。
シングル スレッド アパートメントに関するすべての情報は、アパートメント モデルとしてマークされたスレッドに適用され、マルチスレッド アパートメントに関するすべての情報は、フリースレッドとしてマークされているすべてのスレッドに適用されます。 アパートメントスレッドルールはアパート間通信に適用され、「Single-Threaded Apartments」で説明されているように、CoMarshalInterThreadInterfaceInStream と CoGetInterfaceAndReleaseStreamを呼び出して、アパートメント間でインターフェイス ポインターをマーシャリングする必要があります。
手記
インプロセス サーバーを処理する場合は、いくつかの特別な考慮事項が適用されます。 詳細については、「In-Process Server Threading Issues」を参照してください。
関連トピック
-
スレッド モデル の選択