我是否必须在重写配置功能中调用窗体中控件的所有公开的dispose功能?

时间:2009-07-20 07:26:27

标签: winforms controls dispose

我有一个包含许多控件的窗体,例如定时器,网格视图和绑定源等,所有这些都暴露了一个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()究竟做了什么?

感谢

3 个答案:

答案 0 :(得分:2)

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

当您手动创建实现IDisposable界面的其他一次性对象时,您需要手动处理对象的唯一时间,例如文件句柄(Stream,{ {1}} ...),GDI对象(StreamReaderBitmap)和非托管资源。手动释放此类对象可确保您通过释放您创建的资源来遵循良好的编码习惯。

答案 1 :(得分:0)

不,表单会为您调用Dispose。

什么是处理?这取自IDispose

  

使用Dispose方法   界面明确释放   非托管资源   与垃圾收集器。该   对象的消费者可以调用它   当对象不再存在时的方法   需要

答案 2 :(得分:0)

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

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