Мне нужно динамически загружать много (иногда сотни) миниатюр. По соображениям производительности мне нужно сделать это в ограниченном количестве запросов, я использую один запрос/ответ для тестирования. Я отправляю двоичные данные для изображений в ответе и загружаю их в BitmapImage с использованием MemoryStream. Это работает правильно, пока я не загружу более 80 миниатюр, а затем получаю исключение «Катастрофическая ошибка». Чтобы убедиться, что мои данные не повреждены, я попытался несколько раз загрузить BitmapImage с одним и тем же массивом байтов, и он сработает после загрузки 80 или около того.Silverlight: BitmapImage из исключения исключений потоков (Катастрофический сбой (Исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED)))
Ниже приведен пример того, как изображение загружается из массива байтов массив байтов, как известно, имеют действительные данные изображения (PNG):
private BitmapImage LoadImage(byte[] imageData)
{
BitmapImage img = new BitmapImage();
MemoryStream stream = new MemoryStream(imageData);
img.SetSource(stream); // Exception thrown here after too many images loaded.
return img;
}
я затем использовать BitmapImage в качестве источника для Элемент изображения на странице, но ошибка возникает в строке img.SetSource(...)
выше.
Добавление GC.Collect()
в цикл, где я загружаю миниатюры, позволяет загружать еще несколько изображений, поэтому я думаю, что это имеет какое-то отношение к управлению памятью, но я не знаю, что я могу сделать, чтобы исправить проблему ,
Я не уверен, что это может быть проблемой, но MemoryStream имеет свойства ReadTimeout и WriteTimeout. Может ли поток отключиться? – Danexxtone
Я попытался установить ReadTimeout и получил исключение: таймауты не поддерживаются в этом потоке. – toby
Можете ли вы прояснить несколько вещей: почему массив байтов? Нет ли потока из загружаемого файла, который вы могли бы напрямую подать на 'img.SetSource'?Вы уверены, что загружаемые png-файлы имеют размер «миниатюр» или вы загружаете большие изображения, которые масштабируются с помощью элемента управления изображением? Эти миниатюры фотографий? – AnthonyWJones