質問: FileSystemWatcherネットワーク切断 FileSystemWatcherはネットワーク共有上のファイルを監視しています。おそらくネットワークの問題のためにシェアを利用できないようにするイベントが発生した場合、FileSystemWatcherは切断されます。 明らかに私は "エラー"イベントを処理することができ、いくつかのロギングを行い、多くの記事がFSWをエラーイベントハンドラの中に再接続することを提案します。 しかし、エラーイベント内でネットワーク共有がまだ利用できない場合はどうなりますか?次に、ネットワーク共有が利用可能かどうかをテストし、FSWに再接続を試みるタイマーを導入する必要があります。 1)良いアプローチがありますか? 2)FSWがファイルから切断されたと判断するためのプロパティはありますか? FSWの非公開メンバーである "stopListening"があり、FSWが切断されたときにtrueに設定されているように見えます。しかし、これは公開されていません どんな助けも高く評価されるでしょう... ありがとう ケビン
回答: この作品のようなものではないでしょうか?私の簡単なテストケースのために働くようです。 ``` var fsw = new FileSystemWatcher("[folder]", "*.*") { IncludeSubdirectories = true}; var fsw_processing = false; fsw.Deleted += (s, e) => { fsw_processing = true; fsw.EnableRaisingEvents = false; //...... fsw.EnableRaisingEvents = true; fsw_processing = false; }; fsw.Changed += (s, e) => { fsw_processing = true; fsw.EnableRaisingEvents = false; //...... fsw.EnableRaisingEvents = true; fsw_processing = false; }; //governor thread to check FileSystemWatcher is still connected. //It seems to disconnects on network outages etc. Task.Run(() => { while (true) { if (fsw.EnableRaisingEvents == false && fsw_processing == false) { try {fsw.EnableRaisingEvents = true;} catch (Exception) { fsw.EnableRaisingEvents = false; } } System.Threading.Thread.Sleep(1000 * 10);//sleep 10 secs } }); ```