kod*_*ff1 4 c# wpf datacontext event-handling
在努力减少内存泄漏的过程中,我试图弄清楚,在为"DataContextChanged"事件或XAML用户控件上的"Loaded"事件添加处理程序后,即(UserControl.xaml.cs):
public MyUserControl()
{
InitializeComponent();
DataContextChanged += new DependencyPropertyChangedEventHandler(MyUserControl_DataContextChanged);
Loaded += new RoutedEventHandler(MyUserControl_Loaded);
}
Run Code Online (Sandbox Code Playgroud)
如果我需要删除它.WPF是否处理此问题,还是需要手动删除它们?
简短的回答 - 没有.
您只需要在保持对象生根时删除处理程序,这意味着要防止其垃圾回收.如果您创建子对象并让其中一个事件处理程序指向父对象,则不会发生这种情况,因为没有对子对象的悬空引用.
它会如果您创建一个子对象和父对象点的事件处理程序到子对象的一个,因为现在的父对象涉及到子对象的引用,将保持它活着(植根)发生.
在上面指定的情况下,它完全是内部的 - 您在类中添加对您自己的类的引用.当用户控件被销毁时,它将没有引用在另一个类的事件处理程序中.因此您不需要删除事件处理程序.
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |