Unity dummy解决了最小化对象初始化的成本

时间:2013-06-11 09:57:19

标签: c# .net unity-container prism

我有一个组件,构造器需要很长时间才能执行(它使用SAPBOBSdll连接到SAP Business One数据库)在我的Prism应用程序中。我在Unity容器中注册它:

_container.RegisterType<IConnection, Connection>(new ContainerControlledLifetimeManager());

当我尝试解析此组件时,需要很长时间(大约15秒)。使用不同的线程预先解析组件是不好的做法,所以当我尝试使用它时它不会阻止我的程序?我在注册行之后这样做并且效果很好,但我对它有一种奇怪的感觉。

new Task(()=> _container.Resolve<IConnection>()).Start();

这样做是否可以,或者我应该采取其他方式吗?

1 个答案:

答案 0 :(得分:2)

您建议的解决方案听起来不错,特别是如果您将该代码放在Module的Initialize()方法下,并确保在可用时加载模块(而不是按需)。

也许为了让你对其他读者的代码更加明确,我会写下以下内容:

new Task(()=> _container.RegisterInstance<IConnection>(_container.Resolve<Connnection>())).Start();

这使读者明确表示您正在明确解析,以便将该实例注册为单身,以便将来解析该类型。