为什么我在文件确实存在时收到 FileNotFoundException

Why I'm getting FileNotFoundException while the file does exist

我有一个 FileSystemWatcher 可以跟踪是否创建了新文件。如果是的话,我有一个方法可以读取文件并做一些事情..
在下面的代码中,我得到了 FileNotFoundException 但 path/file 确实存在!我已经检查了路径、文件名等。不知道为什么找不到文件。
同样在调试模式下,我验证了路径变量具有正确的路径,但是当我强制它继续时,它以某种方式运行但不幸的是在发布模式下它停止了..

using (StreamReader reader = new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Encoding.Default))
{ 
    //my code
}

我得到的错误是

An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll Additional information: Could not find file 'myPathHere

有人可以帮忙吗?

FileSystemWatcher 告诉您文件何时创建,是的。但这并不意味着到那时文件已经写完了——它肯定不是。当你单步执行代码时,你给了另一个进程写入和关闭文件所需的时间 - 最后,这是一个并发问题,并且并发问题在调试时往往很难重现。同样的,当你开始手动检查时,文件早就完成了——问题出在时间上。遗憾的是,无法使用 FileSystemWatcher 在文件关闭时给您一个注释(因此,准备好供您的应用程序使用)。

您需要等到文件真正完成 - 尝试打开文件并在失败时稍等的简单循环应该就足够了:)