任何人都可以在这个问题上指导我..
如何在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();
}
}
答案 0 :(得分:2)
您可以尝试使用FileStream
和FileAccess
参数的FileShare
构造函数。
并指定,例如FileAccess.Read
和FileShare.Read
,以允许其他进程(或您的进程)打开同一个文件进行阅读。
这方面的简写是File.OpenRead
方法:
using (FileStream secondImageStream = File.OpenRead(secondImage.FullName))
{
...
}
当前代码默认为写入访问权限(FileAccess.ReadWrite
),并且共享以进行读取访问(FileShare.Read
)。因此,两个并发呼叫将发生冲突。
答案 1 :(得分:0)
我建议先使用Handle找出锁定文件的进程。如果这不是您正在编译的过程,那么您得到了答案。如果您自己的进程正在锁定文件,那么在上面的代码的开头放置一个断点,在每个阶段运行Handle以查看文件被锁定的时间。