繁体   English   中英

防止WPF中的内存泄漏

[英]Prevent memory leaks in WPF

使用WinForms您必须在使用gdi对象,事件处理程序,本机代码中的对象等之后释放内存。

WinForms我曾经在dispose方法中删除了事件处理程序。

防止Wpf内存泄漏的最佳解决方法是什么? 它与使用Dispose pattern Winforms的相同吗? 根本上,我是否需要关心事件处理程序, Wpf gdi对象? 运行时创建的资源( Brushes等)如何?

这篇博客文章列出了导致WPF应用程序中内存泄漏的最常见情况。

  • 父窗口中对象的事件处理程序
  • 从静态对象注册到事件
  • 使用计时器
  • 资料绑定
  • 更改文本框的Text属性

它还描述了如何解决这些常见问题。

另一个好的方法是在遵循标准准则的同时开发应用程序,然后使用某种探查器确定任何内存泄漏或性能瓶颈。

来自MSDN :任何WPF框架级元素(从FrameworkElement或FrameworkContentElement派生的那些对象)都具有三个常见的生存期事件:Initialized,Loaded和Unloaded。

.....

卸载将在最后一次引发,并由演示源或可视父级移除。 引发并处理Unloaded时,可能已设置为事件源父元素(由Parent属性确定)或逻辑树或可视树中向上的任何给定元素,这意味着数据绑定,资源引用和样式可能已设置。不能设置为正常或最近一次的运行时值。

注意事件:错过某些事情很容易,因为在委托人居住之前,委托人的所有引用都将存在。 我建议尽可能使用弱事件模式。 实际上,Microsoft在其Prism框架中使用了它。

http://msdn.microsoft.com/en-us/library/aa970850.aspx

还要检查学习WPF时被很多次我抓住的问题http://support.microsoft.com/kb/938416/zh-cn

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM