我似乎有一些大內存消耗問題。當我第一次加載包含gridview和observablecollection的wpf應用程序時,該應用程序大約爲10mb。WPF內存問題與圖像
當我點擊GridView中的一個項目它打開其中包含被傳遞一個base64字符串,然後我轉換成一個BitmapImage的
然後,應用程序從10MB跳到高達約123MB的圖像控制的另一個窗口。原始圖像大小爲64k,但我所存儲的所有圖像都是base64字符串,我將其轉換回byte [],然後轉換爲BitmapImage。 是的,我的意思是做到這一點。
當我關閉窗口時,沒有一個ram獲得釋放。我甚至嘗試過調用GC。
我用下面的代碼打開的base64圖像到
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.None;
bitmapImage.StreamSource = new SIO.MemoryStream(imageBytes);
bitmapImage.EndInit();
return bitmapImage;
那然後被分配到Image.Source
這聽起來像分析的工作。 –
如果將CacheOption更改爲'BimapCacheOption.OnLoad',你會發現有什麼區別嗎?還要檢查你是不是掛在'imageBytes'的副本上。 – Nathan