2011-01-17 9 views
0

画像ファイルを保存してから、画像名前空間を使用して画像のサイズを変更しています。画像にファイルハンドルを解放する

画像がシステムに保存される時点から、画像のサイズ変更が処理される時点まで、ファイルハンドルがすぐに解放されないようで、「GDI +で一般的なエラーが発生しました。 「

ここに私のコードです:

私はasyncfileuploadのAJAXコントロールを使用しています、VS 2008の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

System.Drawing.Imageは使い捨てである、あなたは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"); 
0

また、Dispose関数を使用してすべてをクリーンアップすることもできます。たとえば、

FullsizeImage.Dispose();

関連する問題