我知道这个问题已被提出,但我的问题比我见过的其他问题更为普遍。
当我在我的程序中检查我使用Forms
中的控件和DB
(命令,读者等)的命令时,我遇到了以下问题:
如果我有一个控件,我使用后不应该Dispose
吗?
这样我就可以确保我的程序只使用了所需的资源,如果我必须使用已经处理过的控件,那么我只需再次加载它。
也许总有理由不处理所有事情,但这就是我问这个问题的原因。
感谢您的回答,我希望我能说清楚。
答案 0 :(得分:7)
您创建的非可视组件(命令,读取器,I / O组件,基本上任何实现IDisposable
的组件)都应该在您完成之后进行处置。
对于可视化控件,Form
的{{1}}函数应自动处理其Dispose
集合中的所有控件,因此您只需要担心从中删除的控件由于某种原因,表单Controls
。
除非您遇到严重的内存问题,否则尝试手动处理表单控件可能是微优化。
答案 1 :(得分:4)
是的,如果没有具体的理由反对它,你可能应该处理一切。在Form
和Form
处置时,控件会自动处理。
不处理UI资源不是很有害。系统资源的使用量比需要的多一点。在大多数情况下,这不是一个功能性问题。
当然,这与数据库连接和文件形成对比!处置它们至关重要。
答案 2 :(得分:0)
如果您正在使用非托管资源,那么是。继续实施IDisposable,使用using将简化您的工作。但并不总是如你的问题。您的控件(UI控件)已实现此IDisposable,并在关闭时由其父级调用。
答案 3 :(得分:0)
是的,你应该。在Windows窗体窗口(或分别在容器内),窗体设计器为您完成:
protected override void Dispose(bool disposing)
{
if(disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}