簡體   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