Процесс не может получить доступ к файлу, потому что он используется другим процессом - с использованием статического класса

Я получаю ошибкуПроцесс не может получить доступ к файлу, потому что он используется другим процессом " когда я пытаюсь удалить только что загруженные файлы (это по крайней мере через несколько секунд после загрузки файлов, поэтому я уверен, что они закончили запись). Есть идеи, почему это происходит? 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");
    }

Ответы на вопрос(1)

Ваш ответ на вопрос