进程无法访问文件'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();
}
}
您可以尝试使用FileAccess
和FileShare
参数的FileStream
构造函数
并指定,例如,FileAccess.Read
和FileShare.Read
,以允许其他进程(或您的进程)打开相同的文件进行读取。
这是File.OpenRead
方法的简写:
using (FileStream secondImageStream = File.OpenRead(secondImage.FullName))
{
...
}
当前代码默认为写访问(FileAccess.ReadWrite
),共享读访问(FileShare.Read
)。因此,两个并发调用将发生冲突。
我建议首先使用Handle找出哪个进程正在锁定您的文件。如果这不是你编译的过程那么你就得到了答案。如果您自己的进程正在锁定文件,那么在上述代码的开始处设置一个断点,在每个阶段运行Handle以查看文件何时被锁定。