在Windows关闭时强制关闭服务 - Prism

时间:2012-11-06 15:51:29

标签: c# mvvm service prism

我正在使用Prism和MVVM模式

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

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

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

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

我看到2个解决方案 *有一个eventaggregator,可以让我的存储库知道shell何时关闭,然后取消订阅服务(不确定它会工作) *从shell解析存储库(因为它已注册为单例),并在服务时取消订阅,但这将非常难看......

1 个答案:

答案 0 :(得分:0)

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

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