C# 如何在C语言中实现一个图像文件的连续保存和删除功能#
如何在C#4.0中实现一个图像文件的连续保存和删除功能 我期待修改一个图像文件,如旋转90度。首先,我保存了一个本机名称,删除了原始文件,并将备用文件名重命名为原始文件名 在iis中托管我的应用程序后,遇到此错误消息 “该进程无法访问该文件,因为其他进程正在使用该文件。”C# 如何在C语言中实现一个图像文件的连续保存和删除功能#,c#,.net,image,file-io,C#,.net,Image,File Io,如何在C#4.0中实现一个图像文件的连续保存和删除功能 我期待修改一个图像文件,如旋转90度。首先,我保存了一个本机名称,删除了原始文件,并将备用文件名重命名为原始文件名 在iis中托管我的应用程序后,遇到此错误消息 “该进程无法访问该文件,因为其他进程正在使用该文件。” 您使用Image.FromFile方法创建了一个Image对象,表示该文件中包含的图像 Image i= Image.FromFile(fileName); 这就是为什么您不能删除该文件:因为您的进程仍在使用它!您将无法删除
您使用
Image.FromFile
方法创建了一个Image
对象,表示该文件中包含的图像
Image i= Image.FromFile(fileName);
这就是为什么您不能删除该文件:因为您的进程仍在使用它!您将无法删除磁盘上的文件,直到您从中创建的图像
对象被释放,释放对文件的锁定
FromFile
方法的示例确认了这一点:
在释放图像之前,文件将保持锁定状态
要确保对象已被释放,请将其创建和使用包装在文件中。您使用
Image.FromFile
方法创建了一个Image
对象,该对象表示该文件中包含的图像
Image i= Image.FromFile(fileName);
这就是为什么您不能删除该文件:因为您的进程仍在使用它!您将无法删除磁盘上的文件,直到您从中创建的图像
对象被释放,释放对文件的锁定
FromFile
方法的示例确认了这一点:
在释放图像之前,文件将保持锁定状态
要确保对象已被释放,请将其创建和使用包装在文件中。解决方案可能如下所示
Image i= Image.FromFile(fileName);
i.Save(svfilename);
i.Dispose();
System.IO.File.Delete(fileName);
System.IO.File.Move(svfilename, fileName);
解决方案可能是这样的
Image i= Image.FromFile(fileName);
i.Save(svfilename);
i.Dispose();
System.IO.File.Delete(fileName);
System.IO.File.Move(svfilename, fileName);
为什么不直接覆盖现有文件,而不是使用临时文件<代码>图像i=Image.FromFile(文件名);过程(i);i、 保存(文件名,ImageFormat.PNG)代码>。请注意,您还缺少ImageFormat参数。为什么不直接覆盖现有文件,而不是使用临时文件<代码>图像i=Image.FromFile(文件名);过程(i);i、 保存(文件名,ImageFormat.PNG)代码>。请注意,您还缺少ImageFormat参数。