进程无法访问该文件,因为它正在被另一个进程(使用静态类)使用
本文关键字:进程 另一个 使用 静态类 访问 文件 因为 | 更新日期: 2023-09-27 18:17:32
当我试图删除我刚刚上传的文件时,我得到错误"该进程无法访问文件,因为它正在被另一个进程使用"(这至少是在文件上传后几秒钟,所以我确信它们已经完成写入)。知道为什么会这样吗?PS:缩略图我生成删除没有问题,但原件被锁定不知何故。
var FileExt = Path.GetExtension(photo.File.FileName);
var FilePath = Path.Combine(Server.MapPath("~/App_Data/" + photo.ClientId), photo.PhotoId.ToString()) + FileExt;
photo.File.SaveAs(FilePath);
var ThumbFilePath = Path.Combine(Server.MapPath("~/App_Data/" + photo.ClientId),photo.PhotoId.ToString() + "_thumbnail") + FileExt;
PhotoTools.MakeThumbnail(FilePath, ThumbFilePath, 0.15);
return RedirectToAction("Create");
在PhotoTools类内部…
public static void MakeThumbnail(string ImgIn, string ImgOut, double Percent)
{
Image img = Image.FromFile(ImgIn);
double Width = img.Width*Percent;
double Height = img.Height*Percent;
MakeThumbnail(ImgIn, ImgOut, (int)Width, (int)Height);
}
删除功能……
public ActionResult DeleteConfirmed(int id)
{
Client client = db.Clients.Find(id);
db.Clients.Remove(client);
db.SaveChanges();
if (Directory.Exists(Server.MapPath("~/App_Data/" + id)))
{
Directory.Delete(Server.MapPath("~/App_Data/") + id,true);
}
return RedirectToAction("Index");
}
在您的MakeThumbnail方法中,确保您在Image
类型上调用Dispose()
。使用using语法:
using (Image img = Image.FromFile(ImgIn))
{
// Your code
}