我正在使用已知的 MVVM 设计模式在 Prism 6 Library 的帮助下使用 c# 编写 WPF 应用程序。
我正在使用 Unity-Container 将依赖项注入(inject)到我的对象中,并试图了解这些对象在什么时间点被处置。
当应用程序第一次启动时,我注册了我的依赖项,比如工作单元、db-context 和其他依赖项。
令我困惑的是这些对象在什么时间点被处理掉。
我绑在Dispose()
上放了一个断点实现 IDisposable
的类中的方法接口(interface),但它似乎从来没有接到电话。我的应用程序将关闭并且断点永远不会被调用。
我的应用程序可以使用右上角的“X”图标关闭,明确地使用 System.Windows.Application.Current.Shutdown();
Windows 重新启动/关闭,或使用任务管理器强制任务结束。
Unity 在什么时候处理已注册的依赖项?
另外,当我在 Entity Framework 中使用 DbContext 类时,何时打开与数据库的连接,何时关闭?我应该将我的 DbConntection 和 UnitOfWork 类注册为单例或其他 LifeTimeManager 吗?
最佳答案
At what point does Unity dispose the registred dependencies?
当您处置容器时,永远不会。然后只有在
ContainerControlledLifetimeManager
注册的类型(或 HierarchicalLifetimeManager
)。Unity 可以为您创造东西,这取决于您如何使用它以及何时销毁它。
at what point it time is the connection to the database is open and when does it get closed?
实例是在需要时创建的,也就是说,当您直接解析它们或将需要它们的类型解析为依赖项或依赖项的依赖项时...
关于c# - Unity-Container 在什么时间点在 WPF 应用程序中处理它的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49469880/