1. ホーム
  2. .net

[解決済み] STAとMTAについて教えてください。

2022-03-23 21:47:42

質問内容

STAとMTAについて、あなたの言葉で説明してください。

また、アパートメントスレッドとは何ですか、COMにのみ関係するものですか?もしそうなら、それはなぜですか?

解決方法は?

COM スレッドモデルは、初期化された COM オブジェクトの実行コンテキストが 1 つのスレッド (Single Thread Apartment) または多数のスレッド (Multi Thread Apartment) に関連付けられる、quot;apartment" モデルと呼ばれています。このモデルでは、COMオブジェクトは一度アパートメントで初期化されると、その実行時間の間、そのアパートメントの一部となる。

STAモデルは、スレッドセーフでないCOMオブジェクトに使用されます。つまり、そのオブジェクトは自身の同期を処理しない。一般的な使用例としては、UIコンポーネントが挙げられる。そのため、他のスレッドがオブジェクトと対話する必要がある場合(フォームのボタンを押すなど)、そのメッセージはSTAスレッドにマーシャルされます。Windowsフォームのメッセージポンプシステムはこの例です。

COM オブジェクトが自身の同期を処理できる場合、MTA モデルを使用することができ、複数のスレッドがマーシャルコールなしでオブジェクトと対話することが可能になります。