可用的棱镜后视导航从

可用的棱镜后视导航从

问题描述:

我使用的6.2.0可用的棱镜后视导航从

最新的稳定版本我已经安装的棱镜使用IRegionMemberLifetime接口视图模型,并设置KeepAlive属性使用棱镜在WPF应用程序返回false。在视图模型中,创建时使用以下代码注册到IEventAggregator事件。

EventAggregator.GetEvent<NewLayerSetEnabledEvent>().Subscribe(NewLayersetEnabledAction); 

的问题,我有是我从视图导航后,视图模型依然存在,当我发布这个事件另一种观点也被调用。有没有办法强制视图在GC导航后被处理掉,或者是否需要在调用OnNavigatedFrom事件时取消订阅事件。

重要的是,您必须时刻牢记.NET CLR中的垃圾收集器,事实上您(通常)不知道它究竟运行的时间。 (当然,您可以强制垃圾收集器使用GC.Collect()方法等运行,但这是一个例外,不应过度使用 - 请参阅this srticle)。

所以记住这一点,当你的视图被GC化时,你永远无法确定。一般来说,它可能还活着一段时间,甚至在应用程序关闭之前仍然存活(请参阅Generation 2)。

如果您想确保您的已关闭视图的视图模型不再主动地对由EventAggregator引发的事件作出反应,您必须取消订阅视图删除后的所有事件。