0

我正在使用 Prism 和 MVVM 模式

我有一个在我的容器中注册的存储库中运行的服务,如下所示:

_container.RegisterType<ITheService, TheService>();
_container.RegisterType<IRepository<Order>, Repository>(new ContainerControlledLifetimeManager());

存储库的构造函数将订阅该服务,然后该服务将接收新元素(例如每秒 5 到 10 个)。问题是由于这个订阅,当我关闭我的 GUI 窗口时,保存服务的模块没有关闭,服务继续运行,而不是被 dispose 关闭。

如果我不在 MVVM 中,我会在关闭窗口时取消订阅该服务,但 shell 窗口不能这样做。

我看到 2 个解决方案 * 有一个 eventtaggregator 可以让我的存储库知道 shell 何时关闭,然后取消订阅服务(虽然不确定它是否会工作) * 从 shell 解析存储库(因为它已注册为单例),并取消订阅当服务,但那会很丑陋....

4

1 回答 1

0

所以我尝试了我的第一个想法,即使用 EventAggregator。

当 Closed 事件被触发时,shell 在 EventAggregator 中发布一个事件。保存服务的存储库已订阅该事件,并会在 shell 关闭时收到通知。所以我只需要在收到通知时关闭服务...

于 2012-11-07T03:02:00.683 回答