什么时候删除.Net中的图像源文件是否安全?

时间:2012-03-19 09:55:05

标签: .net image gdi+

使用下面的代码时,我有时会收到错误“GDI +。在System.Drawing.Image.Save中发生了一般错误”。我开始相信这是因为我在保存新创建的图像之前删除了源图像。是这样的吗?什么时候删除源图像文件真的安全吗?

子类:

thumbnailImage = GetThumb();
thumbnailImage.Save(fullDestinationFilename);

基类:

public virtual Image GetThumb() {
    using (var image = Image.FromFile(sourceFile)) {
        thumbImage = Crop(image, BrowserWidth, BrowserHeight));
    }
    File.Delete(sourceFile);
    return thumbImage;
}

private static Image Crop(Image image, int width, int height) { 
    var croppedImage = new Bitmap(width, height);
    using (var g = Graphics.FromImage(croppedImage)){
        g.DrawImage(image, 0, 0, image.Width, image.Height);
       return croppedImage;
   }

}

2 个答案:

答案 0 :(得分:0)

我想我现在已经开始工作了。问题不在于我向你展示的代码。将缩略图保存到文件后,我将其写入http响应流并且DID NOT DISPOSE缩略图图像。当另一个导致该文件保存的请求进入时,它无法覆盖该图像文件,因为它仍然被锁定在上一个请求中。

答案 1 :(得分:-1)

你尝试过这样的事吗

public virtual Image GetThumb() {
    using (var image = Image.FromFile(sourceFile)) {
        thumbImage = Crop(image, BrowserWidth, BrowserHeight));
    }
    if(thumbImage != null)
    {     
      File.Delete(sourceFile);
    }
    return thumbImage;
}

此外,我认为如果您使用 try catch 语句会更好。