2013-12-15 5 views
1

В процессе приложения периодически выскакивает исключение: System.OutOfMemoryExceptionPictureDecoder.DecodeJpeg, OutOfMemoryException

Что может быть проблема переполнения памяти?

Спасибо!

private void ShowImage(IsolatedStorageFile appStorage, string Path) 
    { 
     // Читаем изображения из изолированного хранилища 
     using (IsolatedStorageFileStream Stream = appStorage.OpenFile(Path, FileMode.Open)) 
     { 
      // Формируем элемент Image 
      Image Img = new Image(); 
      Img.Height = 160; 
      Img.Width = 250; 
      Img.Margin = new Thickness(10); 

      // Читаем поток и заносим результат в WriteableBitmap 
      >>> WriteableBitmap wb = PictureDecoder.DecodeJpeg(Stream); <<<// Exception: System.OutOfMemoryException 
      Img.Source = wb; 
      Stream.Close(); 

      // Выводим изображения из директории Up на страницу 
      PhotoPanel.Children.Add(Img); 

      // Чистим мусор 
      GC.Collect(); 
      GC.WaitForPendingFinalizers(); 
      GC.Collect(); 
     } 
    } 
+0

В среднем четыре картины, каждая весом около 1,5 Мб. Исключение vyplyvat периодически, обычно в 5 - 7 раз, когда приходят на эту страницу. – Alexis

+0

WriteableBitmap wb = PictureDecoder.DecodeJpeg (поток 250, 160); Работа, спасибо! – Alexis

+0

Да, спасибо, больше никаких исключений. – Alexis

ответ

1

Вы можете ограничить размер обработанного с помощью перегрузки DecodeJpeg, например, так:

WriteableBitmap wb = PictureDecoder.DecodeJpeg(Stream, Img.Width , Img.Height);