C#FileSystemWatcher进程已在使用中

时间:2019-01-31 18:43:58

标签: c# filesystemwatcher system.io.file

我正在使用a来检测文件。一旦检测到文件,我想读取内容并将其存储在字符串中。但是当尝试读取内容时,我已经使用了进程。

这是我的代码:

FileSystemWatcher

1 个答案:

答案 0 :(得分:3)

在这种情况下,您必须了解File IO锁的工作方式。

让我们调用创建文件过程A的过程

进程A首先会创建文件并获得对该文件的排他锁,以向其中写入内容

一旦发生这种情况,您将获得文件创建事件,以指示该文件已创建。但是此时,进程A仍对文件保留独占锁定,因为它尚未完成内容写入。

如果您可以直接访问编写器进程,则可以向程序发出一些信号,以指示文件已完成并且可以使用。否则,您将必须执行一些错误处理才能重试,直到可以成功读取文件为止。

但是请注意,您的读取将获得文件上的共享读取锁,从而阻止任何其他过程在读取完成之前获取排他锁。因此,如果进程A尝试再次以独占方式锁定文件,它将失败并且如果处理不正确可能会崩溃。

欢迎来到并发和竞争状况世界!