освобождение дескриптора файла на изображении - PullRequest
0 голосов
/ 17 января 2011

Я сохраняю файл изображения, затем использую пространство имен Image для изменения размера изображения.

Проблема заключается в том, что с момента сохранения изображения в систему до момента обработки изменения размера изображения дескриптор файла, кажется, не сразу освобождается, что дает мне ошибку «В GDI + произошла общая ошибка»

Вот мой код:

Я использую asyncfileupload ajax, C # в VS 2008

string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
AsyncFileUpload1.SaveAs(Server.MapPath("./") + "abc.jpeg");

//File handle seems not get released right away here.            

System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(Server.MapPath("./") + "abc.jpeg");
System.Drawing.Image NewImage = FullsizeImage.GetThumbnailImage(60, 60, null, IntPtr.Zero);

NewImage.Save(Server.MapPath("./") + "abc.jpeg"); 

Ответы [ 2 ]

2 голосов
/ 17 января 2011

System.Drawing.Image Одноразовый, вам нужен оператор использования.

string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
AsyncFileUpload1.SaveAs(Server.MapPath("./") + "abc.jpeg");

System.Drawing.Image NewImage = null;
//File handle seems not get released right away here.
using(System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(Server.MapPath("./") + "abc.jpeg"))
    NewImage = FullsizeImage.GetThumbnailImage(60, 60, null, IntPtr.Zero);

using(NewImage)
    NewImage.Save(Server.MapPath("./") + "abc.jpeg");
0 голосов
/ 18 января 2011

Другое решение - использовать функцию Dispose для очистки всего. Например

FullsizeImage.Dispose ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...