В моем приложении ASP.NET есть функции обрезки и изменения изображения. Это требует удаления загруженного временного изображения. Все работает нормально, но когда я пытаюсь удалить изображение размером более 80 пикселей на 80 пикселей, я получаю сообщение «Файл заблокирован другим процессом ...», хотя я выпустил все ресурсы.Почему GDI не позволяет мне удалять большие изображения?
Вот отрывок:
System.Drawing.Image tempimg = System.Drawing.Image.FromFile(temppath);
System.Drawing.Image img = (System.Drawing.Image) tempimg.Clone(); //advice from another forum
tempimg.Dispose();
img = resizeImage(img, 200, 200); //delete only works if it's 80, 80
img.Save(newpath);
img.Dispose();
File.Delete(temppath);
Этот код не является правильным. Документация для Image.FromStream гласит: «Вы должны держать поток открытым для жизни Image». Вышеприведенный код этого не делает. И, если это так, файл останется заблокированным. –
Я отредактировал свой ответ. Теперь у вас есть поток, который остается открытым, и файл не будет заблокирован. – codymanix