大事件发生:
在测试过程中,数据的动态加载以及UserControl的切换展示没有问题。但随着切换次数的增加,界面变得越来越卡顿。
此时的我心中顿时警铃大作——有些该被释放掉的资源没有被释放掉?!但是每次进行界面切换,我都会调用Clear方法,将PanelControl里面的对象清空(PanelControl.Clear();),这时我开始怀疑UserControl对象仍在被主程序引用,系统无法进行GC.Collect(),对象没有被回收。
测试:
我在UserControl中的订阅方法里增加一行Console.WriteLine方法,进行测试。
理想情况下每切换一次UserControl,会调用一次委托,让UserControl绑定的委托方法输出一条信息。测试却发现,第一次会输出1条、第二次输出2条、第三次输出3条…
这说明了除了第一次调用委托方法,后面每次调用都有不止一个对象在响应且数量依次增加,看来确实是每次的UserControl都没有被成功回收。
结合.NET的垃圾回收机制,断定UserControl对象还在被主程序引用,导致没有被成功释放,可鞥是没有解除委托与方法的绑定造成的。
我将针对这个问题做了以下优化:
修改以下代码:
声明:小猿资源站是一个资源分享和技术交流平台,本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。