userControl1.Dispose()是否会处理所有一次性对象?

时间:2012-03-24 09:33:17

标签: c# dispose user-controls disposable

我创建了一个userControl库..它包含NetworkStream,StreamReader,FileStream
当具有此userControl的表单关闭时,我必须全部处理它们吗?

我的意思是在userControl中没有这样的Form1_FormClosing(object sender,FormClosingEventArgs e)所以什么时候应该处理这些流?
userControl1.Dispose()会处理这个吗?

提前感谢:)

2 个答案:

答案 0 :(得分:4)

UserControl.Dispose()将组件放在其Controls集合中,但仅此而已。

您可以处理UserControl.Disposed事件,也可以properly implement the Dispose pattern

对于C#用户控件,protected override void Dispose(bool disposing)会自动创建UserControl1.Designer.cs。您可以将其修改为:

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        if (components != null)
        {
            components.Dispose();
        }

        // Dispose your streams here
    }

    base.Dispose(disposing);
}

答案 1 :(得分:0)

userControl1.Dispose()不会神奇地处理它,除非你覆盖它并放入代码来处理你的对象,这是你应该做的。

查看this answer以了解如何实施它,将您的电子邮件替换为重新管理事件。