2
我的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的文檔聲明「您必須保持該流在圖像的整個生命週期中處於打開狀態。」上面的代碼沒有這樣做。而且,如果確實如此,該文件將保持鎖定狀態。 – 2009-10-10 22:07:13
我編輯了我的答案。現在你有一個流保持打開狀態,文件不會被鎖定。 – codymanix 2009-10-10 22:33:32