Конструкция
public static Image GetImage(byte[] data) {
if (data == null) return null;
MemoryStream ms = new MemoryStream(data);
Image img = Image.FromStream(ms);
// closing the stream later crashes the application
// ms.Close(); // => memory leak
return img;
}
при перерисовке изображения создаст OUT OF MEMORY exception.
Если закрывать MemoryStream, то будет memory leak
Для решения проблемы нужно использовать следующий фрагмент
Image img = Image.FromStream(ms);
Image ReturnMe = (Image)img.Clone();
img = null;
ms.close();
Рабочий вариант:
public static Image GetImage(byte[] data) {
if (data == null) return null;
MemoryStream ms = new MemoryStream(data);
Image img = Image.FromStream(ms);
Image ReturnMe = (Image)img.Clone();
img = null;
ms.close();
return ReturnMe;
}
Комментариев нет:
Отправить комментарий