如何在WinForm中清除用户控件的内存?

时间:2012-06-15 01:56:21

标签: .net winforms memory dispose

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

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

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

那我怎么摆脱它?

UPDATE 根据我的理解,如果我从表单中删除控件并且没有任何其他引用它,最终它将从内存中清除,它就不会像如果我写object_reference = null,那么我不会立即看到taskmgr中的内存丢失,但垃圾收集会在心情正常时进行

1 个答案:

答案 0 :(得分:3)

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

尝试

if (this.Controls.ContainsKey("uc_foo"))
  this.Controls["uc_foo"].Dispose();