7

イベントが発生した後FileSystemWatcher.Error、私は次に何をすべきかについての手がかりがありません。例外は、[比較的]マイナーなものである可能性があります。

ディレクトリ内の一度に多くの変更

これはウォッチャーの監視プロセスには影響しませんが、監視対象のディレクトリが削除されるなど、大きな問題になる可能性もあります。その場合、ウォッチャーは機能しなくなります。

私の質問は、エラーイベントを処理するための最良の方法は何ですか?

4

2 に答える 2

3

確かにエラーに依存しますか?

  1. バッファーがオーバーランした (多くの変更) ためにデータが多すぎる場合は、ディレクトリの一覧を作成し、必要な変更を取得します。
  2. FileSystemWatcher イベントを十分に迅速に処理していないためにデータが多すぎる場合は、効率的に処理していることを確認してください。
  3. 削除されたディレクトリ。FileSystemWatcher を破棄するか、そのディレクトリ名が再度作成されるのを親で監視する以外に何もできません。
于 2012-07-26T10:13:19.987 に答える
1

単純に内部例外タイプを取得し、エラーごとに何をするか(再起動または失敗)を決定します。

それで

myWatcher.Error += new ErrorEventHandler(OnError);

フォローする

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));
    }
}
于 2012-07-26T10:12:39.717 に答える