簡體   English   中英

System.OutOfMemoryException-渲染3-5個不同的高分辨率圖像時

[英]System.OutOfMemoryException - When rendering 3-5 different high-res images

背景:我有一個帶有頁面的應用程序,該頁面顯示了幾個低分辨率的縮略圖(有些是100 x 150,另一些則更大,更小)。 當用戶點擊圖像時,會將其帶到另一個名為“ ImageViewer”的頁面(將圖像名稱存儲在全局字符串中,然后使用該字符串來完成圖像的來源)。 此頁面顯示全分辨率圖像並具有縮放選項。

問題:當渲染3-5張全分辨率圖像(這些圖像大約為38 MP)時,即使用戶在查看后輕按,應用也會因“ System.OutOfMemoryException”而崩潰。

我知道這些圖像很大,但是有沒有辦法在按下后退按鈕后從內存中“刪除”它們? 當按下后退按鈕時,我嘗試將圖像源更改為1 x 1圖像,但好像Windows Phone“記住”了渲染。

謝謝!

建議不要在代表圖像的對象上調用Dispose()方法,而不是調用GC.Collect()。 這將使您可以更好地控制何時釋放對象的內存,並應提高應用程序的性能。

您用於這些圖像的對象類型很可能繼承自.Net Bitmap類,該類圍繞GDI +位圖。 調用Dispose()方法將直接釋放與GDI +位圖關聯的基礎數據。 通過將關聯的圖像對象設置為null,您已經在執行此操作,但是這是一種循環方法,而不是您選擇的時間。 有關在.Net中處理對象的更多信息,請參見IDisposable.Dispose方法的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM