【问题标题】:Unity dummy resolve to minimize the cost of object initializationunity dummy resolve 以最小化对象初始化的成本
【发布时间】:2013-06-11 09:57:19
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# .net unity-container prism


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多