1

我有一个包含许多控件的 windows 窗体,例如计时器、gridviews 和绑定源等,所有这些都公开了一个 dispose 函数。我是否必须在此调用他们的 dispose 函数

        protected override void Dispose(bool disposing)
    {

        if (disposing && (components != null))
        {
            components.Dispose();
        }
        // do I have to write something here ???
        base.Dispose(disposing);
    }

还有 components.Dispose() 到底是做什么的?

谢谢

4

3 回答 3

2

通常,当您通过 Visual Studio 中的工具箱将控件添加到表单时,控件将自动Disposed为您服务(在protected override void Dispose方法中)。

唯一需要手动释放对象的时候是手动创建实现IDisposable接口的其他可释放对象,例如文件句柄 ( Stream, StreamReader...)、GDI 对象 ( Bitmap, Brush) 和非托管资源。手动释放这种类型的对象可确保您通过释放您创建的资源来遵循良好的编码习惯。

于 2009-07-20T09:40:49.500 回答
0

不,表格会为您调用 Dispose。

什么是处置?这是取自这里IDispose

使用此接口的 Dispose 方法与垃圾收集器一起显式释放非托管资源。当不再需要对象时,对象的使用者可以调用此方法

于 2009-07-20T07:31:25.827 回答
0

base.Dispose调用调用System.Windows.Forms.Form.Dispose,它处理菜单和其他表单控件。调用以 结束System.Windows.Forms.Control.Dispose,它递归地处理所有子控件。

我想您不必担心,只要您的控件可以直接或传递地从表单中访问。

于 2009-07-20T07:39:40.257 回答