我有一个包含许多控件的窗体,例如定时器,网格视图和绑定源等,所有这些都暴露了一个dispose函数。我是否必须在此
中调用他们的处理功能 protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
// do I have to write something here ???
base.Dispose(disposing);
}
component.Dispose()究竟做了什么?
感谢
答案 0 :(得分:2)
通常,当您通过Visual Studio中的工具箱向表单添加控件时,控件将自动为Disposed
(在protected override void Dispose
方法中)。
当您手动创建实现IDisposable
界面的其他一次性对象时,您需要手动处理对象的唯一时间,例如文件句柄(Stream
,{ {1}} ...),GDI对象(StreamReader
,Bitmap
)和非托管资源。手动释放此类对象可确保您通过释放您创建的资源来遵循良好的编码习惯。
答案 1 :(得分:0)
答案 2 :(得分:0)
base.Dispose
调用会调用System.Windows.Forms.Form.Dispose
,它会处理菜单和其他表单控件。调用以System.Windows.Forms.Control.Dispose
结束,递归处理所有子控件。
我想你不必担心,只要您可以直接或传递地从表单中访问您的控件。