配置 .NET Framework 4.5 System.IO.FileSystemWatcher 的设置以就错误、容错、健壮、智能等进行交流

Configure settings of .NET Framework 4.5's System.IO.FileSystemWatcher to be Communicative about Errors, Fault-tolerant, Robust, intelligent, etc

在我的办公室,我们使用 ( https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=netframework-4.5 ) .NET Framework 4.5 System.IO.FileSystemWatcher

我们在分布式网络环境中有一个应用程序模块运行。

其中一个远程应用程序模块将有一个 System.IO.FileSystemWatcher 监视网络共享目录中的文件的实例。

在某些情况下,从所述远程应用程序的角度来看,网络共享目录可能会脱机,然后在几分钟后恢复。

我们在远程应用程序模块的代码中使用了以下 C# 代码片段:

FileSystemWatcher    _watcher = new FileSystemWatcher
    {
        Path = DirectoryPath,
        NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                                | NotifyFilters.FileName | NotifyFilters.DirectoryName,
        Filter = FileNameFilter
    };

    _watcher.Created += Watcher_CreatedChanged;
    _watcher.EnableRaisingEvents = true;

我们注意到如果网络共享目录可能暂时离线,然后在几分钟后恢复,那么我们的远程应用程序模块的 FileSystemWatcher 实例

-不抛出错误,

-更糟糕的是,从远程应用程序模块的角度来看,当网络共享目录处于脱机状态时,它不会注意到可能已放入所述网络共享目录中的文件

有人可以告诉我 modifications/additions 我必须对上述配置代码做些什么才能创建 FileSystemWatcher 实例

-关于错误的交流更多?

-当网络共享目录重新联机时,恢复功能更强大、更智能? (在我们的例子中,这意味着在网络共享目录下线时注意放置在网络共享目录中的文件(从我们的远程应用程序模块的角度来看)

-更容错?

FileSystemWatcher 有一个错误事件,您正在处理它吗?您的代码段显示您正在处理 Created 事件,而不是任何其他事件。

以下whosebug.com 问答帖很有帮助:

FileSystemWatcher vs polling to watch for file changes

@peter-meinl 但是,我真的要感谢@peter-meinl 在 Wordpress.com 上发表的以下帖子,这非常有帮助,因为他创造了这些功能丰富的 "wrapper" 类 对于 .NET 的标准 FileSystemWatcher

https://petermeinl.wordpress.com/2015/05/18/tamed-filesystemwatcher/