我有一堆用户控件,每一个用不同的菜单选择填充屏幕,我想杀K100前一个(清除内存),我不能写硬编码因为我不知道在运行时,这是前面显示的控件。只使用this.Controls.Remove('uc_foo')
从表单中删除控件并不能完全清除内存(我使用taskmgr检查)
使用foreach&amp ;;迭代表单的控件。应用object_reference = null
会导致错误“无法分配,因为它是一个foreach迭代变量”。
拒绝访问this.Controls[i]
= null,因为它只读
那我怎么摆脱它?
UPDATE 根据我的理解,如果我从表单中删除控件并且没有任何其他引用它,最终它将从内存中清除,它就不会像如果我写object_reference = null
,那么我不会立即看到taskmgr中的内存丢失,但垃圾收集会在心情正常时进行
答案 0 :(得分:3)
正确。删除控件不会丢弃它。
尝试
if (this.Controls.ContainsKey("uc_foo"))
this.Controls["uc_foo"].Dispose();