早在 2009 年,可能是 Unity 2.0 之前的版本,我看到一个讨论线程表明 CreateChildContainer() 不是线程安全的:
此外,如果您使用 CreateChildContainer() 方法创建子容器,它们将在创建期间将自己添加到其父容器的 livetime 容器中,并在处置时移除。因此,从单独的线程处理子容器可能会导致错误,即使每个子容器一次只能由一个线程访问。
Unity 2.0 确实(仍然)如此吗?Unity 3.0 或更高版本呢?
如本文所述,如果使用 WCF 实现 Unity,这一点尤其重要。这个想法是使用子容器来轻松处理 HierarchylifetimeManager 实例。虽然我现在想知道是否应该使用 PerRequestlifetimemanager 而根本没有子容器。