Как и в моем комментарии:
Всегда dispose
изображения, особенно с открытыми файловыми дескрипторами.
Использование:
imgOriginal?.Dispose();
pictureBox1.Image?.Dispose();
вместо: .Image = null
... более подробно:
Класс Image
использует GDI
, что заставляет открывать дескрипторы. Эти дескрипторы не закрываются автоматически, просто теряя ссылку в вашем приложении. Они не собираются сборщиком мусора (docs.microsoft.com Garbrage-Collection) .
Это может привести к непредсказуемому поведению вашего приложения или за его пределами.
Например: если вы загружаете изображение из файла, открытый дескриптор приводит к filelock (!) также, если вы просто нажимаете для отображения изображения.
Для этого случая вы можете загрузить все изображение в промежуточный объект System.IO.MemoryStream
.
Инкапсулируйте изображение из оригинального источника следующим образом:
var stream = new System.IO.MemoryStream(System.IO.File.ReadAllBytes(filepath));
var Image = Image.FromStream(stream);
Это загрузит файл в память и изображение из него.
Утилизируйте поток и изображение после использования или при загрузке другого изображения.