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)):
Как в последствии выяснилось это возникало из-за того, что изображение хранилось в формате gif.
После того, как изображение было заново загружено в базу данных в другом формате, приложение отлично заработало.