如何在 VB.Net 中正确地从内存中删除控件?
How to properly remove a control from memory, in VB.Net?
比较简单的问题。
我有一个面板,上面有一些文本框,都是动态创建的。
用户填写了一些文本框,然后继续关闭面板。
现在在我使用的代码行中;
Me.Pnl_Main.Controls.Clear()
这很好用,面板内容是 "removed"。
问题是,当出于相同目的重新创建文本框时,它们仍然包含以前的值。
不幸的是,大多数 UI 都是这样创建的,这不可避免地会导致内存泄漏。
所以我的问题是,是否有正确的方法从内存中完全删除控件?或者我是否需要 运行 例程将所有文本值设置为 Nothing?
提前致谢。
处置对象与内存无关。可以更快地从内存中删除已处置的对象,但 .NET 会在内存准备就绪时回收内存。分配新内存比重新分配现有内存便宜得多,因此大部分时间都是这样做的。
只要您的代码的某些部分包含对控件的引用,它们就不会从内存中清除。您必须删除对这些控件的所有引用,例如
Me.Pnl_Main.Controls = Nothing
只要这些控件未在其他任何地方引用,它们就可以从内存中删除,但您实际上无法控制它们何时最终从内存中删除。这是由垃圾收集器完成的,垃圾收集器通常会在内存开始变满时自动 运行 。
比较简单的问题。
我有一个面板,上面有一些文本框,都是动态创建的。 用户填写了一些文本框,然后继续关闭面板。
现在在我使用的代码行中;
Me.Pnl_Main.Controls.Clear()
这很好用,面板内容是 "removed"。
问题是,当出于相同目的重新创建文本框时,它们仍然包含以前的值。
不幸的是,大多数 UI 都是这样创建的,这不可避免地会导致内存泄漏。
所以我的问题是,是否有正确的方法从内存中完全删除控件?或者我是否需要 运行 例程将所有文本值设置为 Nothing?
提前致谢。
处置对象与内存无关。可以更快地从内存中删除已处置的对象,但 .NET 会在内存准备就绪时回收内存。分配新内存比重新分配现有内存便宜得多,因此大部分时间都是这样做的。
只要您的代码的某些部分包含对控件的引用,它们就不会从内存中清除。您必须删除对这些控件的所有引用,例如
Me.Pnl_Main.Controls = Nothing
只要这些控件未在其他任何地方引用,它们就可以从内存中删除,但您实际上无法控制它们何时最终从内存中删除。这是由垃圾收集器完成的,垃圾收集器通常会在内存开始变满时自动 运行 。