最近做WPF的时候,遇到了内存泄漏的问题。

ANARYI 2014-12-09 03:34:55
大体与这篇帖子里面的情况类似,http://bbs.csdn.net/topics/380183240。请问里面的8L想表达什么意思?
...全文
264 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ANARYI 2014-12-10
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
看了下,无限循环的为控件绑定了事件,导致了内存泄露。 清空控件的时候,最好把 事件给取消掉(遍历清空),例如 ,
btn.Click -= 定义的事件
为此我昨天做了一个实验,新建了一个WPF程序,里面放了两个按钮,按钮A的功能是为页面增加一百个LABEL,并且一个label绑定了5个事件,按钮B是分别绑定了四种自定义方法。 第一种方法是只移除label,没有移除事件,可以看到即使移除了label后内存还是很高 第二种方法是移除label并且移除所有事件,实话说区别和第一种区别不大。 第三种方法是按照那里的8L说的,新建一个方法在里面绑定事件,比第二种方法要好上一点。 第四种方法是强制回收GC,虽然不知道会有什么不良影响,但是至少看起来效果相当不错。
exception92 2014-12-10
  • 打赏
  • 举报
回复
看了下,无限循环的为控件绑定了事件,导致了内存泄露。 清空控件的时候,最好把 事件给取消掉(遍历清空),例如 ,
btn.Click -= 定义的事件
dianjixue1 2014-12-10
  • 打赏
  • 举报
回复
就是在WPF中添加事件的时候,使用要谨慎。 尤其是如果给自动生成的列表控件中的Item添加事件,可能把列表的Item都Clear掉了,但是事件还在。 因为TreeViewItem是树,创建或调用的时候往往使用递归,造成了事件的无限循环。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧