进程无法访问文件'D:dup.jpg'因为它正在被另一个进程使用

本文关键字:进程 因为 另一个 访问 文件 dup jpg | 更新日期: 2023-09-27 18:09:09

谁能指点我一下这个问题?

如何在vc#中避免这个异常——

"进程无法访问文件'D:'dup.jpg',因为它正在被由另一个进程使用。"

从Adi那里得到一个根本不起作用的解决方案…

代码片段在这里…

using (FileStream firstImageStream = 
    new FileStream(firstImage.FullName, FileMode.Open))
{
    using (FileStream secondImageStream = 
        new FileStream(secondImage.FullName, FileMode.Open))
    {
        hashingTool = new SHA256Managed();
        Byte[] imageOneHash = hashingTool.ComputeHash(firstImageStream);
        Byte[] imageTwoHash = hashingTool.ComputeHash(secondImageStream);
        hashingTool.Clear();
    }
}

进程无法访问文件'D:dup.jpg'因为它正在被另一个进程使用

您可以尝试使用FileAccessFileShare参数的FileStream构造函数

并指定,例如,FileAccess.ReadFileShare.Read,以允许其他进程(或您的进程)打开相同的文件进行读取。

这是File.OpenRead方法的简写:

using (FileStream secondImageStream = File.OpenRead(secondImage.FullName)) 
{
    ...
}

当前代码默认为写访问(FileAccess.ReadWrite),共享读访问(FileShare.Read)。因此,两个并发调用将发生冲突。

我建议首先使用Handle找出哪个进程正在锁定您的文件。如果这不是你编译的过程那么你就得到了答案。如果您自己的进程正在锁定文件,那么在上述代码的开始处设置一个断点,在每个阶段运行Handle以查看文件何时被锁定。

相关文章: