我只需要一點幫助就澄清Messenger類如何在MVVM-Light中使用ICleanup。我正在使用Mvvm-Light v4在VB.Net中創建一個WPF 4應用程序。在VB.NET中使用mvvm light icleanup和messenger取消註冊
我有寄存器,用於從的NavigationService類發送的消息我創建如下的信使:
這是命名ClientListViewModel
''register for messages
Messenger.[Default].Register(Of INavigationService)(Me, "NavigationStart", False, AddressOf HandleParentChildNavigate)
此接收的NavigationService類和執行在視圖模型登記根據與此問題無關的其他邏輯進行檢查。
如下
''Send message that navigation has been requested
Messenger.Default.Send(Of INavigationService)(Me, "NavigationStart")
這樣,如果我接受的類我取消了導航事件(在這種情況下ClientListViewModel)有數據驗證錯誤時,我的NavigationService類是觸發導航事件被髮送的消息,並將焦點返回到有錯誤的記錄。這一切都很好。
我的問題是,我在哪裏以及如何取消註冊郵件。我知道我需要爲了避免內存泄漏,因爲我在其他帖子上閱讀。我看到類似以下的東西:
Public Overrides Sub CleanUp()
Messenger.Default.Unregister(Me)
End Sub
這個清理是在同一個viewmodel(CientListViewModel)接收消息。
所以我有三個問題:
我什麼時候應該調用此方法清理
療法與ViewModelLocator的方式註銷所有郵件收件人,當應用程序被關閉?
這個問題不太相關,但我也會感激一些幫助,如何判斷是否因未註冊的郵件收件人而導致「內存泄漏」?
感謝您的時間
謝謝亞歷山大,這讓我朝着正確的方向前進 –