4

私は COM アパートメントと .NET 相互運用について多くのことを読んできましたが、この質問に対する答えはまだ見つかりませんでした。それは私が間違った質問をしているかもしれないと私に信じさせます.

.NET スレッドは、ネイティブ スレッドのように MTA にも STA にもなり得ることを知っています。これに関するドキュメントを見つけましたが、オブジェクトとその CCW がこれらのアパートメントにどのように関連付けられているかについてはほとんどわかりません。

私の推測では、CCW のスレッド モデルは「両方」であり、CCW は、作成中のスレッドが属するアパートメントに関連付けられています。

CCW が関連付けられているアパートメントはどれですか?この動作を制御できますか?

4

1 に答える 1

4

.NET で実装された COM オブジェクトは、通常、あらゆる種類の COM アパートメントに存在できます。デフォルトでは、.NET アセンブリを COM サーバーとして登録するための .NET メソッド/ツールは、コクラスをスレッド モデル = で登録しますBoth

.NET クラスを別のスレッド モデルを持つ COM コクラスとして公開する場合 (たとえば、STA を強制する場合)、カスタマイズされた登録関数を提供する必要があります。

于 2012-10-09T09:04:05.763 に答える