如何清除()控件而不引起内存泄漏

本文关键字:内存 泄漏 控件 何清除 清除 | 更新日期: 2023-09-27 18:10:44

在阅读了Control.Clear();导致内存泄漏(在MSDN上验证)后,我想知道是否:

while (Controls.Count > 0) Controls[0].Dispose();

就足够了,或者我必须递归地遍历控件中的所有控件吗?

还有,在那之后有任何理由做一个Control.Clear();吗?(我看到有人在某处说)?

谢谢。

如何清除()控件而不引起内存泄漏

发布的代码片段是正确的。不需要Clear(), control . dispose()方法已经从Controls集合中删除了该控件。这就是为什么它有效。

循环的不太危险的版本是:

 for (int ix = Controls.Count-1; ix >= 0; --ix) Controls[ix].Dispose();

不需要遍历控件的子元素并处理它们,这已经自动完成了。