2013-12-13 76 views
0

當我創建一個bitmapimage的列表時,我得到了一個OutOfmemory錯誤...System.OutOfMemory BitmapImage WP8

我該怎麼做......?

感謝您的幫助;)

這裏是我的代碼:

 foreach (var bytearray in imageDataBlocksPresta) 
      { 
       if (bytearray != null) 
       { 
        MemoryStream ms; 
        using (ms = new MemoryStream(bytearray, 0, bytearray.Length)) 
        { 
         BitmapImage photo = new BitmapImage(); 
         photo.DecodePixelHeight = 800; 
         photo.DecodePixelWidth = 624; 
         photo.SetSource(ms);//ERROR 

         listphotoPresta.Add(photo); 
        } 
       } 

       else//si photo null 
       { 
        BitmapImage photo = new BitmapImage(); 
        photo.DecodePixelHeight = 800; 
        photo.DecodePixelWidth = 624; 
        photo.UriSource = new Uri("/Images/NoImageIcon.jpg", UriKind.RelativeOrAbsolute); 

        listphotoPresta.Add(photo); 

       } 
+0

你有多少個字節數組?這個錯誤是在第一次迭代中發生的還是後來的(當)? –

+0

當幾張照片已被添加到列表中時,會發生錯誤。字節數組的長度在30k到40k之間。它不是使錯誤發生的照片尺寸,而是大部分的總和。 –

回答

0
  • 不要創建NoImageIcon所有的時間。僅使用一個參考
  • 不要嘗試將所有圖像存儲在內存中。這是一部手機。
  • 限制你的應用程序的設備至少有512MB內存
  • 存儲較低resuolution圖片。 800 * 600是在許多設備上全屏點播
  • 加載圖像
  • GC電話後立即鬆開圖像
+0

名爲「photo」的對象不是我的UI對象...我有一個帶有位圖屬性的模型。我得到了一個實例列表和一個bitmapimage列表。我將每個對象從bitmapimage列表中分配給模型對象列表中的對象... Sry for chinese english –

+0

謝謝你的分辨率太高... –

2

嘗試設置圖片爲空,所以GC.Collect調用()一旦你加入它。像這樣:

listphotoPresta.Add(photo); 

photo = null; 
GC.Collect(); 
+0

非常感謝你很多爲你的幫助它解決我的問題... –

+0

懇請標記爲答案;) –