シングルスレッド通信とマルチスレッド通信

シングルスレッド アパートメントとマルチスレッド アパートメントの両方をサポートするクライアントまたはサーバーには、フリースレッドとして初期化されたすべてのスレッドを含む 1 つのマルチスレッド アパートメントと、1 つ以上のシングルスレッド アパートメントがあります。 インターフェイス ポインターは、アパートメント間でマーシャリングする必要がありますが、アパートメント内でマーシャリングせずに使用できます。 シングルスレッド アパートメント内のオブジェクトの呼び出しは、COM によって同期されます。 マルチスレッド アパートメント内のオブジェクトへの呼び出しは、COM によって同期されません。

シングルスレッド アパートメントに関するすべての情報は、アパートメント モデルとしてマークされたスレッドに適用され、マルチスレッド アパートメントに関するすべての情報は、フリースレッドとしてマークされたすべてのスレッドに適用されます。 アパートメントスレッドルールはアパートメント間通信に適用され、シングルスレッド アパートメントで説明されているように、CoMarshalInterThreadInterfaceInStreamCoGetInterfaceAndReleaseStream を呼び出して、アパートメント間でインターフェイス ポインターをマーシャリングする必要があります。

Note

インプロセス サーバーを処理する場合は、いくつかの特別な考慮事項が適用されます。 詳細については、「インプロセス サーバー スレッドの問題」を参照してください。

 

アパートメント間のインターフェイスへのアクセス

スレッドモデルの選択

マルチスレッドアパートメント

インプロセス サーバーのスレッドの問題

プロセス、スレッド、およびアパートメント

シングルスレッドアパートメント