如何在C#中实现一个图像文件的连续保存和删除功能

本文关键字:文件 图像 连续 保存 功能 删除 一个 实现 | 更新日期: 2023-09-27 18:21:04

如何在C#4.0 中连续执行一个图像文件、保存和删除功能

我想修改一个像旋转90度这样的图像文件。首先,我保存了一个本机名称,删除了原始文件,并将备用文件名重命名为原始文件名。

在iis中托管我的应用程序后,出现以下错误消息"进程无法访问该文件,因为另一个进程正在使用该文件。"

Image i= Image.FromFile(fileName);
i.Save(svfilename);
System.IO.File.Delete(fileName);
System.IO.File.Move(svfilename, fileName);

如何在C#中实现一个图像文件的连续保存和删除功能

您使用Image.FromFile方法创建了一个Image对象,表示该文件中包含的图像

Image i= Image.FromFile(fileName);

这就是为什么您不能删除该文件:因为您的进程仍在使用它!您将无法删除磁盘上的文件,直到您从中创建的Image对象被释放,从而释放对该文件的锁定。

FromFile方法的文件证实了这一点:

在释放图像之前,文件一直处于锁定状态。

若要确保对象已释放,请将其创建和使用包装在using块中。

解决方案可能是这样的

Image i= Image.FromFile(fileName);
i.Save(svfilename);
i.Dispose();
System.IO.File.Delete(fileName);
System.IO.File.Move(svfilename, fileName);