什么是从FileSystemWatcher的错误中恢复的最佳做法是什么?(What's th

2019-06-26 13:02发布

一个后FileSystemWatcher.Error引发事件,我不知道下一步该怎么做的线索。 例外可以是[比较]次要之一,如

同时在目录中太多的变化

这并不影响观看者的观看过程中,但它也可以是一个大问题 - 比如监控目录被删除,在这种情况下,观察者不再起作用。

我的问题是什么是处理错误事件的最好方法?

Answer 1:

依赖于一定的误差?

  1. 如果太多的数据,因为缓冲区溢出了(许多变化)做一个列表目录,并抓住你后的变化。
  2. 如果数据太多,因为你不处理FileSystemWatcher的事件的速度不够快,确保您高效地处理它。
  3. 删除目录,不能做任何事情比配置的FileSystemWatcher的,或者可能再次观看该目录名的娱乐父等。


Answer 2:

我只想得到内部异常类型,然后决定在每个错误基础上做了什么(重启或失败)。

所以

myWatcher.Error += new ErrorEventHandler(OnError);

通过Followde

private static void OnError(object source, ErrorEventArgs e)
{
    if (e.GetException().GetType() == typeof(InternalBufferOverflowException))
    {
        //  This can happen if Windows is reporting many file system events quickly 
        //  and internal buffer of the  FileSystemWatcher is not large enough to handle this
        //  rate of events. The InternalBufferOverflowException error informs the application
        //  that some of the file system events are being lost.
        Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message));
    }
}


文章来源: What's the best practice to recover from a FileSystemWatcher error?