gpt4 book ai didi

c# - 如何在不导致内存泄漏的情况下 Clear() 控件

转载 作者:行者123 更新时间:2023-12-01 22:20:01 25 4
gpt4 key购买 nike

在阅读了 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();

无需遍历控件的子级并处置它们,这已经自动发生。

关于c# - 如何在不导致内存泄漏的情况下 Clear() 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7705234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com