0

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

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

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

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

可以这样做还是我应该以其他方式进行?

4

1 回答 1

2

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

也许为了让你正在做的事情对代码的其他读者更明确,我会写一些类似的东西:

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

这让读者清楚地知道,您正在显式解析,以便将该实例注册为单例,以便将来解析该类型。

于 2013-06-13T20:07:40.177 回答