Я пишу простую программу изменения размера изображения. Перетаскивая несколько файлов на .exe, он будет проходить и изменять размер каждого файла. Это работает до определенного момента, когда генерируется исключение OOM (нехватка памяти). Я пытался вызвать Dispose для растрового изображения и установить его в Null, но ни один из них, похоже, ничего не делает.
Bitmap current_image;
for (int i = 0; i < imagesfilepath.Count; ++i)
{
// Load the image.
if ( current_image != Null )
{
current_image.Dispose();
current_image = Null;
}
current_image = (Bitmap)Image.FromFile(imagesfilepath[i], true);
// Resize it.
// Save it.
}
Исключение обычно выдается после использования 1,5 ГБ. Я могу обойти эту проблему, ограничив количество изображений, которые пользователь может изменить за один раз, но разве я не смогу просто выделить память для одного растрового изображения и использовать ее каждую итерацию?