BitmapImage и “Разрушительный сбой (Исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED))”

Приложение на Silverlight должно отображать изображения, которые хранятся в  базе данных. Массив байтов берётся из БД с помощью WCF Services:

public byte[] GetQImageFromDB(int QID)
{
  // Создание DataContext
  eLearningDCDataContext db = new eLearningDCDataContext();
  // Получаем данные
  var result = (from Pic in db.PictQs
                where Pic.IDq == QID
               select Pic).First();
  // Возвращаем рузультат
  return result.pict.ToArray();
}

Приложение получает данные и выводит изображение пользователю:

void sc_getImgCompleted(object sender, TestSL.ImgSR.getImgCompletedEventArgs e)
{
  // Создаём поток памяти
  MemoryStream ms = new MemoryStream(e.Result);
  // Создаём BitmapImage
  BitmapImage bmi = new BitmapImage();
  // Выводим в него поток
  bmi.SetSource(ms);
  ms.Close();

  Image img = new Image();
  img.Source = bmi;
  // Назначаем ресурс
  spMain.Children.Add(img);
}

Как видно, всё просто…

Но в процессе тестирования всплывала ошибка при отладке — Разрушительный сбой (Исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED)):

BitmapImage_exeption

Как в последствии выяснилось это возникало из-за того, что изображение хранилось в формате gif.

После того, как изображение было заново загружено в базу данных в другом формате, приложение отлично заработало.

Добавить комментарий