在什么时候我需要处理我的自定义WPF用户控件?

Max*_*lov 3 c# wpf user-controls dispose

我的问题是关于WPF中的内存处理.我创建了一个用户控件,但是XAML只包含标准的WPF控件.此时我没有在代码隐藏中实现任何代码.

在我的应用程序中,我创建了一个用户控件的实例,以显示给用户.当我不再需要用户控件时,我可以将它的引用变量赋值为null值.

我是否需要自己编写.Dispose方法并在我的用户控件中处理内部控件?或者将这项工作留给垃圾收集者是一种好习惯吗?谢谢.

Ree*_*sey 6

通常,在WPF中,您不需要进行控制IDisposable.与Windows窗体不同,WPF UIElement对象是完全托管的,而不是(通常)包装本机句柄.因此,它们不需要处理,并且可以留给垃圾收集器.

这就是为什么UserControl不实施IDisposable.

当然也有例外.例如,如果您的类封装了从HwndHost(例如WebBrowser)派生的任何内容,您可能希望创建类IDisposable以调用Dispose()封装的控件.这通常仅在互操作场景中需要(即:WebBrowser,与本机浏览器控件互操作).