C# 将文件从一个文件夹移动到另一个文件夹时发生IOException

C# 将文件从一个文件夹移动到另一个文件夹时发生IOException,c#,wpf,C#,Wpf,我正在将文件从远程计算机复制到计算机中的临时文件夹。然后我检查下载文件的md5,并将下载文件从临时文件夹移动到当前应用程序目录。以下是我的方法: if (Hasher.HashFile(tempFile, HashType.MD5) != _md5) { DeleteFile(tempFile); return false; } else { var updatedFile = currentAppLocation+@"\" + appFileName + ".xml";

我正在将文件从远程计算机复制到计算机中的临时文件夹。然后我检查下载文件的md5,并将下载文件从临时文件夹移动到当前应用程序目录。以下是我的方法:

if (Hasher.HashFile(tempFile, HashType.MD5) != _md5)
{
    DeleteFile(tempFile);
    return false;
}
else
{
    var updatedFile = currentAppLocation+@"\" + appFileName + ".xml";
    //copy to current directory
    if (File.Exists(updatedFile))
        DeleteFile(updatedFile);

    File.Move(tempFile, updatedFile); // here error!

    //delete xml from server
    if (DeleteFile(file))
    {
        //delete txt with checksum from server
        return DeleteFile(txtFile);
    }                        
    return false;
}
我总是得到一个例外:

进程无法访问该文件,因为其他进程正在使用该文件


知道为什么吗?

您的代码正在将文件从网络共享复制到临时文件位置。然后使用Hasher.HashFile计算MD5哈希,然后使用file.Move移动临时文件


但是,正如您所发现的,由于文件已打开,因此无法移动该文件,因此最可能的解释是Hasher.HashFile在计算哈希后不会关闭该文件。

从何处获得IOException。简单地调试你的应用程序很可能会指出确切的问题…@MarkJansen我在这里的代码中写到了错误@w、 b我只做处理和移动操作,而不更改contentHasher。HashFile在计算哈希值时很可能不会关闭文件。@MartinLiversage谢谢你!像回答一样贴出来!这么愚蠢的错误。。。