CreateChildContainer()线程安全吗?

时间:2013-10-30 15:56:00

标签: c# .net dependency-injection unity-container

早在2009年,可能是在Unity 2.0之前,我看到thread of discussion表明CreateChildContainer()不是线程安全的:

  

此外,如果使用CreateChildContainer()方法创建子容器,它们将在创建期间将其自身添加到其父容器的livetime容器中,并在处置时删除。因此,从单独的线程中处理子容器可能会导致错误,甚至每个子容器只能被一个线程访问。

Unity 2.0确实(仍)是真的吗? Unity 3.0或更高版本怎么样?

如果this article中所述,如果使用WCF实现Unity,则会特别感兴趣。我们的想法是使用子容器来轻松处理HierarchylifetimeManager实例。虽然我现在想知道是否应该使用PerRequestlifetimemanager而根本没有子容器。

1 个答案:

答案 0 :(得分:1)

基于最新的源代码(Unity 3.5)。它应该是线程安全的。它将自己添加到父级的生命周期容器parent.lifetimeContainer.Add(this);以及Add的实现使用lock()围绕其私有子级列表的修改。