相对简单的问题。
我有一个带有一些文本框的面板,都是动态创建的。 用户填写一些文本框,然后继续关闭面板。
现在在代码中我使用了行;
Me.Pnl_Main.Controls.Clear()
这样工作正常,面板内容被“删除”。
问题是,当为同一目的重新创建文本框时,它们仍然包含它们之前的值。
不幸的是,对我来说,大多数UI都是这样创建的,这不可避免地导致内存泄漏。
所以我的问题是,有没有一种正确的方法从内存中完全删除控件?或者我是否需要运行例程将所有文本值设置为Nothing?
提前致谢。
答案 0 :(得分:-1)
处理对象与内存没有任何关系。可以更快地从内存中删除已处置的对象,但.NET会在内存良好且准备就绪时回收内存。分配新内存比重新分配现有内存便宜得多,以便大部分时间都可以完成。
答案 1 :(得分:-1)
只要代码的某些部分包含对控件的引用,它们就不会从内存中清除。您必须删除对这些控件的所有引用,例如
Me.Pnl_Main.Controls = Nothing
如果这些控件没有在任何其他位置引用,则可以从内存中删除它们,但实际上并不能控制它们何时最终从内存中删除。这是由垃圾收集器完成的,垃圾收集器通常在内存开始变满时自动运行。