2013-02-11 31 views
1

當我關閉子窗口時,如何釋放一些外部資源(BitmapImage類中的圖像)使用的內存。在關閉窗口時釋放內存WPF

在任務管理器中,當加載所有圖像打開子窗口時,我的應用程序(在C#中使用.NET 3.5的WPF中)使用〜800,000 KB,但是當關閉它時,內存使用率相同,我認爲應用程序不會處理這些資源,比如帶有Dispose()的WinForms應用程序;方法。

+0

Servy的回答相當準確。但是如果你已經在處理你的記憶,那麼你需要意識到GC需要一些時間來清除它的事實。特別是如果它是這樣的大內存。這可能會導致第三層託管內存。 – 2013-02-11 20:08:31

+0

您是否嘗試過在'using'語句中包裝表單,然後實現您自己的'Dispose'方法? – 2013-02-11 20:12:56

+0

誰來決定是否需要這些資源,位圖圖像等等,然後配置內存,而不是等待直到窗口關閉。另一種方法是,不是調用Dispose,而是將所有你知道的東西都包含在'using(){}子句/語句'後面,然後將其釋放。 – MethodMan 2013-02-11 20:21:18

回答

1

您可以在FormClosed事件處理程序中處理資源。

另一種選擇是去設計文件,添加您在Dispose方法調用的部分方法(partial void AdditionalDisposal();),然後就可以在後面定義在您的非設計師代碼,分部方法的實現您將處理所有持有的可支配資源。

+0

它工作時,我創建了一個析構函數和一些方法,內存目前還沒有發佈,但是當我再次打開帶有圖片的窗口時,內存會立即釋放並再次填充數據,這非常有用,因爲內存不會被添加到程序內存的私有空間中。 – FukYouAll 2013-03-04 18:49:17