我正在使用 Prism 和 MVVM 模式
我有一个在我的容器中注册的存储库中运行的服务,如下所示:
_container.RegisterType<ITheService, TheService>();
_container.RegisterType<IRepository<Order>, Repository>(new ContainerControlledLifetimeManager());
存储库的构造函数将订阅该服务,然后该服务将接收新元素(例如每秒 5 到 10 个)。问题是由于这个订阅,当我关闭我的 GUI 窗口时,保存服务的模块没有关闭,服务继续运行,而不是被 dispose 关闭。
如果我不在 MVVM 中,我会在关闭窗口时取消订阅该服务,但 shell 窗口不能这样做。
我看到 2 个解决方案 * 有一个 eventtaggregator 可以让我的存储库知道 shell 何时关闭,然后取消订阅服务(虽然不确定它是否会工作) * 从 shell 解析存储库(因为它已注册为单例),并取消订阅当服务,但那会很丑陋....