如何清除()控件而不引起内存泄漏
本文关键字:内存 泄漏 控件 何清除 清除 | 更新日期: 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();
不需要遍历控件的子元素并处理它们,这已经自动完成了。