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

时间:2011-03-10 19:02:56

标签: c# wpf user-controls dispose

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

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

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

1 个答案:

答案 0 :(得分:6)

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

这就是UserControl未实现IDisposable

的原因

当然有例外。例如,如果您的类封装了源自HwndHost的任何内容(例如WebBrowser),您可能希望创建类IDisposable以便在封装控件上调用Dispose()。这通常仅在互操作方案中需要(即:WebBrowser,它与本机浏览器控件互操作。)