进程无法访问该文件,因为它正在被另一个进程(使用静态类)使用

本文关键字:进程 另一个 使用 静态类 访问 文件 因为 | 更新日期: 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
}