STA と MTA を自分の言葉で説明できますか?
また、アパートメント スレッドとは何ですか? COM にのみ関係しますか? もしそうなら、その理由は何ですか?
ベストアンサー1
COM スレッド モデルは「アパートメント」モデルと呼ばれ、初期化された COM オブジェクトの実行コンテキストは、単一のスレッド (シングル スレッド アパートメント) または複数のスレッド (マルチ スレッド アパートメント) に関連付けられます。このモデルでは、COM オブジェクトは、アパートメントで初期化されると、実行期間中はそのアパートメントの一部となります。
STA モデルは、スレッド セーフではない COM オブジェクトに使用されます。つまり、それらのオブジェクトは独自の同期を処理しません。このモデルの一般的な使用法は UI コンポーネントです。したがって、別のスレッドがオブジェクトと対話する必要がある場合 (フォームのボタンを押すなど)、メッセージは STA スレッドにマーシャリングされます。Windows フォームのメッセージ ポンピング システムは、この例です。
COM オブジェクトが独自の同期を処理できる場合は、マーシャリングされた呼び出しなしで複数のスレッドがオブジェクトと対話できる MTA モデルを使用できます。