在我的WPF应用程序中,我订阅了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来处理?
发布于 2021-11-15 14:53:23
我应该担心内存泄漏吗?
只有在发布事件的父窗口比订阅事件的UserControl更长的时候。
,我是否必须在卸载事件中取消订阅这些事件,还是由GC来处理它?
您需要不显式地取消对窗口的订阅,以使UserControl实例不处于活动状态。同样,如果窗口和UserControl同时具备垃圾收集的条件,这也不是一个问题。
不过,垃圾收集器从不为您取消订阅任何事件。
https://stackoverflow.com/questions/69969985
复制相似问题