如何在VB.Net中从内存中正确删除控件?

时间:2016-12-23 12:09:56

标签: vb.net memory textbox controls panel

相对简单的问题。

我有一个带有一些文本框的面板,都是动态创建的。 用户填写一些文本框,然后继续关闭面板。

现在在代码中我使用了行;

Me.Pnl_Main.Controls.Clear()

这样工作正常,面板内容被“删除”。

问题是,当为同一目的重新创建文本框时,它们仍然包含它们之前的值。

不幸的是,对我来说,大多数UI都是这样创建的,这不可避免地导致内存泄漏。

所以我的问题是,有没有一种正确的方法从内存中完全删除控件?或者我是否需要运行例程将所有文本值设置为Nothing?

提前致谢。

2 个答案:

答案 0 :(得分:-1)

处理对象与内存没有任何关系。可以更快地从内存中删除已处置的对象,但.NET会在内存良好且准备就绪时回收内存。分配新内存比重新分配现有内存便宜得多,以便大部分时间都可以完成。

答案 1 :(得分:-1)

只要代码的某些部分包含对控件的引用,它们就不会从内存中清除。您必须删除对这些控件的所有引用,例如

 Me.Pnl_Main.Controls = Nothing

如果这些控件没有在任何其他位置引用,则可以从内存中删除它们,但实际上并不能控制它们何时最终从内存中删除。这是由垃圾收集器完成的,垃圾收集器通常在内存开始变满时自动运行。