2016-11-25 90 views
1

我使用的6.2.0可用的棱鏡後視導航從

最新的穩定版本我已經安裝的棱鏡使用IRegionMemberLifetime接口視圖模型,並設置KeepAlive屬性使用棱鏡在WPF應用程序返回false。在視圖模型中,創建時使用以下代碼註冊到IEventAggregator事件。

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

的問題,我有是我從視圖導航後,視圖模型依然存在,當我發佈這個事件另一種觀點也被調用。有沒有辦法強制視圖在GC導航後被處理掉,或者是否需要在調用OnNavigatedFrom事件時取消訂閱事件。

回答

0

重要的是,您必須時刻牢記.NET CLR中的垃圾收集器,事實上您(通常)不知道它究竟運行的時間。 (當然,您可以強制垃圾收集器使用GC.Collect()方法等運行,但這是一個例外,不應過度使用 - 請參閱this srticle)。

所以記住這一點,當你的視圖被GC化時,你永遠無法確定。一般來說,它可能還活着一段時間,甚至在應用程序關閉之前仍然存活(請參閱Generation 2)。

如果您想確保您的已關閉視圖的視圖模型不再主動地對由EventAggregator引發的事件作出反應,您必須取消訂閱視圖刪除後的所有事件。