问题描述
还有就是在调用:System.Windows.Forms.Control.ControlCollection.Remove(Controlvalue)时,如何释放Controlvalue的资源呢?
解决方案
解决方案二:
不使用Dispose(),也会自动回收的。不用担心这
解决方案三:
不用在意释放,垃圾自动回收
解决方案四:
引用2楼gxingmin的回复:
不用在意释放,垃圾自动回收
那句柄要如何释放啊,我在测试时有较大数量的控件添加,20分钟左右会报错</StackTrace><ExceptionString>System.Reflection.TargetInvocationException:Exceptionhasbeenthrownbythetargetofaninvocation.---&gt;System.ComponentModel.Win32Exception:Errorcreatingwindowhandle.atSystem.Windows.Forms.NativeWindow.CreateHandle(CreateParamscp)atSystem.Windows.Forms.Control.CreateHandle()atSystem.Windows.Forms.Control.CreateControl(BooleanfIgnoreVisible)atSystem.Windows.Forms.Control.CreateControl(BooleanfIgnoreVisible)atSystem.Windows.Forms.Control.CreateControl()atSystem.Windows.Forms.Control.ControlCollection.Add(Controlvalue)
解决方案五:
控件属于托管资源,不用自己考虑该如何回收的问题
解决方案六:
引用4楼Z65443344的回复:
控件属于托管资源,不用自己考虑该如何回收的问题
那其中的handle和事件用不用注销掉啊
解决方案七:
事件不用管,控件都没了,属性和事件也就没了handle又是什么?
解决方案八:
但是我的程序在不断的添加删除控件的过程中,内存不断的增长,是怎么回事啊
解决方案九:
Dispose是用来释放非托管资源的。你只要确定断开其他地方对你想要释放对象的调用,其他就交给gc来回收。事件的问题,如果这个控件绑定了外部控件/对象的代码,也是会导致无法释放的。(.NETGC不是很确定,SilverlightGC不会释放)所以此类事件你需要手工-=去掉绑定的外部方法。