进程无法访问'myfile.jpg'因为它正在被另一个进程使用

本文关键字:进程 另一个 jpg 访问 myfile 因为 | 更新日期: 2023-09-27 18:17:05

我已经做了一个方法,检查图像是否存在(覆盖它)或不(创建它),但当我执行

System.IO.File.Delete(wmImg); 

系统抛出错误:

进程无法访问文件'myfile.jpg',因为它正在被由另一个进程使用

代码下面:

wmImg = Server.MapPath("myFileNew.jpg");
wroi = Server.MapPath("myFile.jpg");
string s11 = op.ToString();
float ss = float.Parse(s11);
float opacityvalue = ss / 10;
var img = ImageUtils.ImageTransparency.ChangeOpacity(Image.FromFile(wroi), opacityvalue);
if (System.IO.File.Exists(wmImg))
{
    System.IO.File.Delete(wmImg); // Raise the error ...
    img.Save(wmImg);
}
else
{
    img.Save(wmImg);
}

进程无法访问'myfile.jpg'因为它正在被另一个进程使用

您正在使用返回IDisposableImage.FromFile。文档指定:

文件一直处于锁定状态,直到Image被处理。

所以你必须把Image.FromFile放到using块中

检查wmImg是否存在,如果不存在,则抛出异常并执行catch。现在你的应用程序不会被图像阻塞。FromFile

using (FileStream stream = new FileStream(wmImg, FileMode.Open, FileAccess.Read))
{
    try
    {
        File.Delete(wmImg);
        img.Save(wmImg);
    }
    catch
    {
         //You could catch some more error here, but for now.
         img.Save(wmImg);
    }
}