Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CreateChildContainer()是否线程安全?_C#_.net_Dependency Injection_Unity Container - Fatal编程技术网

C# CreateChildContainer()是否线程安全?

C# CreateChildContainer()是否线程安全?,c#,.net,dependency-injection,unity-container,C#,.net,Dependency Injection,Unity Container,回到2009年,可能是Unity 2.0之前的版本,我看到一个提示CreateChildContainer()不是线程安全的: 此外,如果您使用CreateChildContainer()方法创建子容器,则它们将在创建期间将自身添加到其父容器的Live Time容器中,并在处置时将其删除。因此,从单独的线程处理子容器可能会导致错误,即使每个子容器一次只能由一个线程访问 Unity 2.0真的(仍然)是这样吗?Unity 3.0或更高版本怎么样 如中所述,如果使用WCF实现Unity,这一点尤其重

回到2009年,可能是Unity 2.0之前的版本,我看到一个提示CreateChildContainer()不是线程安全的:

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

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


如中所述,如果使用WCF实现Unity,这一点尤其重要。其思想是使用子容器轻松地处理HierarchylifetimeManager实例。尽管我现在想知道是否应该使用PerRequestLifeTime管理器,而不使用任何子容器。

基于最新的源代码(Unity 3.5)。它应该是线程安全的。它使用parent.lifetimeContainer.Add(this)将自身添加到父对象的生存期容器中annd
Add
的实现使用
lock()
对其私有子项列表进行修改。

基于最新的源代码(Unity 3.5)。它应该是线程安全的。它使用parent.lifetimeContainer.Add(this)将自身添加到父对象的生存期容器中annd
Add
的实现使用
lock()