.NET Framework
中的FolderBrowserDialog
组件(以及OpenFileDialog
)实现了IDisposable
接口,这意味着我们应该在完成使用后或发生某些错误(未管理的资源泄漏)时调用其Dispose
方法。
在Visual Studio WinForm设计器中,如果我将FolderBrowserDialog
组件拖到表单上,设计器生成的代码似乎完全没有考虑到这一点,没有任何代码调用FolderBrowserDialog
的Dispose
方法。
相比之下,如果我拖动一个实现了IDisposable
接口的Timer
(位于System.Windows.Forms
命名空间中),生成的代码将是:
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
通过将计时器与容器(this.components)关联,可以确保在容器被处理时计时器被正确处理-当调用Form.Close()
或Form.Dispose()
时会发生。
那么为什么FolderBrowserDialog
组件会接受这种特殊处理呢?