1

Unity 2.0 より前だった可能性がある 2009 年に、CreateChildContainer() がスレッド セーフではないことを示唆するスレッドを目にしました。

また、CreateChildContainer() メソッドで子コンテナを作成すると、作成時に親コンテナの livetime コンテナに自分自身を追加し、破棄時に削除します。そのため、個別のスレッドから子コンテナーを破棄すると、各子コンテナーが一度に 1 つのスレッドによってしかアクセスされない場合でも、エラーが発生する可能性があります。

それはUnity 2.0にも(まだ)当てはまりますか?Unity 3.0以降についてはどうですか?

これは、この記事で説明されているように、WCF を使用して Unity を実装する場合に特に重要です。アイデアは、子コンテナーを使用して HierarchylifetimeManager インスタンスを簡単に破棄することです。代わりに PerRequestlifetimemanager を子コンテナなしで使用する必要があるかどうかは疑問ですが。

4

1 に答える 1

1

最新のソースコード (Unity 3.5) に基づいています。スレッドセーフである必要があります。それは、親のライフタイム コンテナに自身を追加し、子のプライベート リストの変更に関する使用parent.lifetimeContainer.Add(this);の実装を行います。Addlock()

于 2014-05-29T22:34:08.623 に答える