.NET Framework 4中的FileSystemWatcher有多可靠?

25

有人在4框架中使用FileSystemWatcher吗?你遇到过任何问题吗?

我正在使用它在Windows服务中,我不能承担它失败的风险。

我听说它不是很可靠,但我已经测试了几个小时了,没有任何问题,但我仍然对使用它感到怀疑...

我会感激任何有关此事的建议,我不想将应用程序交付给客户,然后意识到这个东西会崩溃....

谢谢。


感谢大家的建议。

我认为对于我的目的来说,它应该没问题。它将检查服务器本地驱动器上的一个文件夹,而它所检查的只是文件是否被修改过,所以我想它应该没问题。


1
很多人对FileSystemWatcher有不合理的期望 - 比如认为“Created”意味着文件存在,具有它预期包含的所有数据,并且没有其他程序正在访问它。 - Damien_The_Unbeliever
1
但在以前的版本中,也有FSW无法捕捉到明显更改的情况。我曾经尝试过使用.NET 2版本,发现它对于简单的文件创建监视(我甚至没有尝试访问这些文件)毫无用处。 - Tridus
1
FileSystemWatcher并不是我所说的“可靠”。如果可靠性很关键,最好将其用作便利工具,并使用轮询来确保没有遗漏文件。请参见FileSystemWatcher vs polling to watch for file changes - Justin
1个回答

44
FileSystemWatcher 依赖于底层文件系统支持,因此文件系统的任何可靠性问题都将作为 FileSystemWatcher 的可靠性问题而显现。例如,如果您正在监视网络目录,则网络服务器的可靠性将影响 FileSystemWatcher 的可靠性。例如,服务器可能会崩溃并重新启动。在网络连接丢失时发生的更改将不会通知您。或者服务器可能 仅仅有一个错误,导致 FileSystemWatcher 无法可靠工作。

另一点是,FileSystemWatcher 仅监视对元数据的更改。并非所有文件更改都会导致元数据的更改


4
此帖子分享了对标准FileSystemWatcher (FSW)的强大封装,修复了在现实应用中使用FSW监视文件系统时常遇到的问题。 - Kiquenet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接