我的问题是关于WPF中的内存处理。我创建了一个用户控件,但是XAML只包含标准的WPF控件。此时我没有在代码隐藏中实现任何代码。
在我的应用程序中,我创建了一个用户控件的实例以显示给用户。当我不再需要用户控件时,我可以将它的引用变量指定为空值。
我是否需要自己编写.Dispose方法并在我的用户控件中配置内部控件?或者将这项工作留给垃圾收集者是一种好习惯吗?感谢。
答案 0 :(得分:6)
通常,在WPF中,您无需创建控件IDisposable
。与Windows窗体不同,WPF UIElement
对象是完全托管的,而不是(通常)包装本机句柄。因此,它们不需要处理,可以留给垃圾收集器。
这就是UserControl
未实现IDisposable
。
当然有例外。例如,如果您的类封装了源自HwndHost
的任何内容(例如WebBrowser),您可能希望创建类IDisposable
以便在封装控件上调用Dispose()
。这通常仅在互操作方案中需要(即:WebBrowser
,它与本机浏览器控件互操作。)