进程无法访问'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);
}
您正在使用返回IDisposable
的Image.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);
}
}