繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM