2

我有一堆用户控件,每一个都在不同的菜单选择上填充屏幕,我想 KILL 前一个(以清除内存),我不能硬编码,因为我在运行时不知道哪个是之前显示的控件。只是从表单中删除控件 this.Controls.Remove('uc_foo')并不能完全清除内存(我检查了 taskmgr)

使用 foreach 和应用迭代表单的控件object_reference = null会导致错误“无法分配,因为它是 foreach 迭代变量”。

访问this.Controls[i]= null 被拒绝,因为它是只读的

那么我该如何摆脱它呢?

更新据我所知,如果我从表单中删除控件并且没有任何其他引用它,最终它会从内存中清除,它不会像我写的那样立即出现object_reference = null,因此我不会看到taskmgr 中的内存立即下降,但垃圾收集会在心情好的时候完成

4

1 回答 1

3

正确的。删除控件不会丢弃它。

尝试

if (this.Controls.ContainsKey("uc_foo"))
  this.Controls["uc_foo"].Dispose();
于 2012-06-15T01:59:06.317 回答