当前位置: 代码迷 >> Silverlight >> 扫除对象后,其绑定事件的内存会被自动释放吗
  详细解决方案

扫除对象后,其绑定事件的内存会被自动释放吗

热度:4343   发布时间:2013-02-26 00:00:00.0
清除对象后,其绑定事件的内存会被自动释放吗
因为程序中是循环添加项,而每一项都要注册事件,这样当记录数多时,比如上万条,占用内存会很多,现在想问下,怎么取消订阅这些事件,是不是将对象置为null,绑定事件占用的空间就会被回收?
求高手指点一二,谢谢!!!
------解决方案--------------------------------------------------------
对象的事件是一个List<>类型
+=增加事件
-=减少事件

对象生存期间会维护一个事件列表,你无限加肯定增加内存。用C#的话设置对象为空对回收空间意义不大。Dispose()提升对象的代  然后在某个特定时间片里调用GC.Collect();GC.WaitForPendingFinalizers();

个人建议你优化一下代码。
------解决方案--------------------------------------------------------
在构造函数中注册事件this.Loaded += new RoutedEventHandler(wpfMainWindow_Loaded);
窗体关闭的时候释放事件this.Closed -= new EventHandler(MainWindow_Closed);
------解决方案--------------------------------------------------------
先将事件-=释放后 再讲对象设置为null
  相关解决方案