我创建了一个userControl库..它包含NetworkStream,StreamReader,FileStream
当具有此userControl的表单关闭时,我必须全部处理它们吗?
我的意思是在userControl中没有这样的Form1_FormClosing(object sender,FormClosingEventArgs e)
所以什么时候应该处理这些流?
userControl1.Dispose()会处理这个吗?
提前感谢:)
答案 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以了解如何实施它,将您的电子邮件替换为重新管理事件。