在我的WPF MVVM應用程式,我訂閱PreviewKeyUp,并PreviewKeyDown在UserControl1.xaml.cs這樣:
UserControl1_Loaded(object sender, RoutedEventArgs e)
{
var window = Window.GetWindow(this);
window.PreviewKeyUp = UserControl1_PreviewKeyUp;
window.PreviewKeyDown = UserControl1_PreviewKeyDown;
}
我應該擔心記憶體泄漏嗎?我必須在事件中取消訂閱這些Unloaded事件還是 GC 會處理它?
uj5u.com熱心網友回復:
我應該擔心記憶體泄漏嗎?
僅當發布事件的父視窗比UserControl訂閱事件的父視窗壽命更長時。
我必須在 Unloaded 事件中取消訂閱這些事件還是 GC 會處理它?
您需要不明確地取消訂閱該視窗,以免UserControl實體保持活動狀態。同樣,如果視窗和視窗同時有UserControl資格進行垃圾收集,這不是問題。
垃圾收集器永遠不會為您取消訂閱任何事件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357649.html
