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