c# - Controls.Clear() 清理的深度有多深?

c# - Controls.Clear() 清理的深度有多深?

Clear不会释放控件,从而导致内存泄漏。从链接:

调用 Clear 方法不会从内存中删除控制句柄。您必须显式调用 Dispose 方法以避免内存泄漏。

由于在循环中处理会弄乱索引,因此您可以将控件集合复制到另一个列表并对其执行ForEach循环或使用向后For循环。

for (int i = myTableLayoutPanelControls.Count - 1; i >= 0; --i)

myTableLayoutPanelControls[i].Dispose();

调用Dispose将从内存中删除控件(当 GC 拾取它时)。这也将处理子控件Dispose方法的调用。

一个问题是,如果您有一个实现的自定义控件,IDisposable或者您在Dispose不调用该方法的情况下覆盖该base方法。在您的对象的Dispose方法中,您需要确保您已取消订阅您范围之外的任何事件。如果您不这样做,该引用将使您的对象保持活动状态。

相关推荐

哈爾費蒂黑玫瑰:神秘的黑暗之美
365bet电子游戏

哈爾費蒂黑玫瑰:神秘的黑暗之美

🗓️ 08-15 👁️ 6567
探秘前轮转向小车
BT365软件提现不了

探秘前轮转向小车

🗓️ 08-06 👁️ 7216
京东怎么扫二维码
365赢多少钱会被限额

京东怎么扫二维码

🗓️ 07-05 👁️ 5391
怎么退ofo押金 退ofo押金方法【教程】
365赢多少钱会被限额

怎么退ofo押金 退ofo押金方法【教程】

🗓️ 09-07 👁️ 2541
教你做豆腐,记住2个比例,15分钟出豆腐,豆香十足,比买的好吃
5G相关知识梳理:MEC UPF MEP
365赢多少钱会被限额

5G相关知识梳理:MEC UPF MEP

🗓️ 07-10 👁️ 3304