因为程序中是循环添加项,而每一项都要注册事件,这样当记录数多时,比如上万条,占用内存会很多,现在想问下,怎么取消订阅这些事件,是不是将对象置为null,绑定事件占用的空间就会被回收?
求高手指点一二,谢谢!!!
------解决方案--------------------------------------------------------
对象的事件是一个List<>类型
+=增加事件
-=减少事件
对象生存期间会维护一个事件列表,你无限加肯定增加内存。用C#的话设置对象为空对回收空间意义不大。Dispose()提升对象的代 然后在某个特定时间片里调用GC.Collect();GC.WaitForPendingFinalizers();
个人建议你优化一下代码。
------解决方案--------------------------------------------------------
在构造函数中注册事件this.Loaded += new RoutedEventHandler(wpfMainWindow_Loaded);
窗体关闭的时候释放事件this.Closed -= new EventHandler(MainWindow_Closed);
------解决方案--------------------------------------------------------
先将事件-=释放后 再讲对象设置为null