Сейчас я попытаюсь обойти это, используя меньшие файлы изображений для миниатюр и / или не загружая так много BitmapImages (выгрузка изображений, когда они не находятся в видимой области, и повторная загрузка их, когда они появляются). ,

ужно динамически загружать много (иногда сотни) миниатюрных изображений. По соображениям производительности мне нужно делать это в ограниченном количестве запросов, я использую один запрос / ответ для тестирования. Я отправляю двоичные данные для изображений в ответе и загружаю их в BitmapImage, используя MemoryStream. Это работает правильно до тех пор, пока я не загружу более 80 миниатюр, а затем я получаю исключение Catastrophic Failure. Чтобы убедиться, что мои данные не были повреждены, я несколько раз пытался загрузить BitmapImage с одним и тем же байтовым массивом, и он зависал после 80 или около того загрузок.

Вот пример того, как изображение загружается из байтового массива, байтовый массив, как известно, имеет действительные данные изображения (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 в качестве источника для элемента Image на странице, но ошибка возникает вimg.SetSource(...) строка выше.

ДобавлениеGC.Collect() в цикле, где я загружаю уменьшенные изображения, я могу загрузить еще несколько изображений, так что я думаю, что это как-то связано с управлением памятью, но я не знаю, что я могу сделать, чтобы решить эту проблему.

Ответы на вопрос(2)

Ваш ответ на вопрос