[英]Unity dummy resolve to minimize the cost of object initialization
我有一个组件,构造器需要很长时间才能执行(它使用SAPBOBSdll连接到SAP Business One数据库)在我的Prism应用程序中。 我在Unity容器中注册它:
_container.RegisterType<IConnection, Connection>(new ContainerControlledLifetimeManager());
当我尝试解决此组件时,需要很长时间(大约15秒)。 使用不同的线程预先解析组件是不好的做法,所以当我尝试使用它时它不会阻止我的程序? 我只是在注册行之后这样做并且效果很好,但我有一种奇怪的感觉。
new Task(()=> _container.Resolve<IConnection>()).Start();
这样做还是可以,或者我应该采取另一种方式吗?
您建议的解决方案听起来不错,特别是如果您将该代码放在Module的Initialize()方法下,并确保模块在可用时加载(而不是按需)。
也许为了让你对代码的其他读者更明确地做些什么,我会写下以下内容:
new Task(()=> _container.RegisterInstance<IConnection>(_container.Resolve<Connnection>())).Start();
这使读者清楚地知道您正在明确解析,以便将该实例注册为单身,以便将来解析该类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.