释放图像上的文件句柄

时间:2011-01-17 20:39:56

标签: c# asp.net ajax

我正在保存图像文件,然后使用Image命名空间调整图像大小。

问题是从图像保存到系统到处理图像大小调整的程度,文件句柄似乎没有立即释放,给我错误“GDI +中发生了一般错误”

这是我的代码:

我在VS 2008中使用asyncfileupload ajax控件,C#

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 个答案:

答案 0 :(得分:2)

System.Drawing.Image是Disposable,你需要一个using语句。

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");

答案 1 :(得分:0)

另一种解决方案是使用Dispose功能清理所有内容。例如

FullsizeImage.Dispose();

相关问题