[英]Prevent memory leaks in WPF
使用WinForms
您必須在使用gdi對象,事件處理程序,本機代碼中的對象等之后釋放內存。
在WinForms
我曾經在dispose方法中刪除了事件處理程序。
防止Wpf
內存泄漏的最佳解決方法是什么? 它與使用Dispose pattern
Winforms
的相同嗎? 根本上,我是否需要關心事件處理程序, Wpf
gdi對象? 運行時創建的資源( Brushes
等)如何?
這篇博客文章列出了導致WPF應用程序中內存泄漏的最常見情況。
它還描述了如何解決這些常見問題。
另一個好的方法是在遵循標准准則的同時開發應用程序,然后使用某種探查器確定任何內存泄漏或性能瓶頸。
來自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.