私はCOM +アプリケーションに入れられるSTA COMコンポーネントを持っています。クライアントは、そのコンポーネントにクラスのインスタンスをいくつか作成し、それらのメソッドを並行して呼び出します。クラスは正しく登録されています。対応するクラスIDの "ThreadingModel"は "Apartment"です。COM +がアパートメントスレッドモデルを無視するのはなぜですか?
同じクラスの同じメソッドのいくつかの呼び出しが、コンポーネント内部で、実際のコンポーネントコード内で並列に実行されているのがわかります。それらは同じプロセスで実行されますが、異なるスレッドで実行されます。
何が起こっているかCOM +はスレッドモデルを無視していますか? STAモデルでは一度に1つのコールしか実行できませんか?
これは、すべての共有変数にアクセスするときに同期が必要なことを意味しますか?共有変数の同時アクセスから保護しない場合は、STAのポイントは何ですか? – sharptooth
私はAamirによるこの答えが間違っていると思います。あるいは、明らかではないCOMスレッディングモデルの何かの無言の詳細に頼っていると思います。 COMの規則により、STA内のオブジェクトはそのアパートメントにあるスレッドからのメッセージのみを受信できます。私は余裕がたくさんあるとは思わない。 –