当引发异常时,.NET的FileSystemWatcher崩溃,throws文件正在用于将来的文件

fra*_*ron 5 .net c# filesystemwatcher winforms

我在使用filesystemwatcher时遇到了问题,这让我发疯了.

事实证明我正在观察文件夹中的新文本文件,当Created Event被引发时,我基本上使用以下代码阅读它:

string txtTemp = File.ReadAllText(MyFilePath);
Run Code Online (Sandbox Code Playgroud)

之后,我处理txtTemp字符串中的数据,基本上我读了它的行并将数据存储在DB上,不是很简单吗?

问题是当在这个过程中引发异常时(假设db连接失败),如果我抓住它并不重要,因为对于下一个即将到来的文件,应用程序将抛出异​​常说

"该进程无法访问文件'theNewComingFile.txt',因为它正由另一个进程使用."

如果新创建的文件甚至没有被打开或读取,它们怎么可能正在使用?并且应用程序不断抛出所有新文件的"进程无法访问文件"异常.

我们唯一能做的就是关闭并重新打开应用程序,这会重置应用程序,一切正常,直到再次引发任何类型的异常>(天啊!)

有任何想法吗?任何解决方法?有什么想法吗?任何建议......任何事情?呵呵呵呵=)

谢谢老兄!

One*_*und 5

您可以使用Sysinternals Process Explorer开始调查.它将为您提供更多详细信息,尤其是包含文件的进程.