C#FileSystem Watcher不会引发错误事件 - 必须轮询目录才能触发它

时间:2014-08-19 15:45:37

标签: c# filesystemwatcher

我们正在使用FileSystemwatcher查找目录中的某些文件,并且有时会出现故障。我们已经处理了文件系统观察者的错误事件,并按照问题中提到的那样优雅地重新启动了观察者 - > FileSystemWatcher stops catching events

但有几次,服务器的网络连接已经关闭,错误事件从未引发过。因此,我们使用一种小方法使用

每3秒轮询一次目录
if(!Directory.Exists(NetWorkPath)){
Logger.Log("Error! The directory doesn't exist");
}

这似乎是FSW正确触发Error事件。

问题 -

  • 这是正确的做法吗?
  • 每隔3(或任意'x'秒)轮询目录以查看它是否仍然存在会破坏使用FSW的目的,我可以使用轮询方法来查找新文件并相应地处理它。
  • 我没有明确指出这是FSW的预期行为,那么,它可能是一个框架4.0错误吗?

注意:我们根据这些文章提供了当前的解决方案 -

1 个答案:

答案 0 :(得分:1)

在网络驱动器上使用FileSystemWatcher(我假设这是你正在做的事情,鉴于网络连接提及)充其量是一个冒险的主张。即使使用SAN和本地驱动器,如果正在创建/删除的文件量足够高并且在常规网络驱动器上,事件也会丢失,因此更不可靠。

实施看似粗糙的民意调查解决方案将是一种更可靠的解决方案。