2017-03-19 26 views
1

開発中のコードの一部にFileSystemWatcherを使用しています。しかし、私は1つの質問がありますが、FSWが見ているフォルダが削除されたらどうなりますか?C#:監視フォルダが削除された後、FileSystemWatcherはどうなるのですか?

私のユースケースはこれです:

  1. ユーザーがディレクトリのFoo

  2. 私のコードを作成し、その後、使用してはFooを監視し、FSW

  3. ユーザーは、ユーザー、後でFooの

  4. を削除しますFooディレクトリを再作成します。

この場合、元のFSWはどうなりますか?それでも新しいディレクトリを見るか、新しいディレクトリを作成する必要がありますか?

ご協力いただきまして誠にありがとうございます。

答えて

1

TL; DR:いいえ、FSWしません自動的時計のが再作成された後、 "フー"。


最も簡単な方法は、それはそれをテストすることで確認することですので、私はやりました。

FileSystemWatcherのインスタンスを使用してディレクトリ "Foo"を監視し、次に監視中のディレクトリを削除すると、FileSystemWatcherはそのディレクトリの監視を停止します。

"Foo"と同じ名前のディレクトリを再作成した後でも、FileSystemWatcherはそのディレクトリの変更のイベントを発生させません。

「フー」が削除され、再作成された後、一貫して動作しません。そのPathプロパティを「foo」とtrueにEnableRaisingEventsプロパティを設定することによりFileSystemWatcherを「リセット」しようとしている - それは周りに正しく初めての作品が、これに失敗します「Foo」が削除されて2回目に再作成された場合はそうしてください。 (これはVisual Studio 2017 Community Editionでテストされています)。

悲しいことに、そのような場合、FileSystemWatcherを期待通りに動作させる唯一の一貫した方法は、FileSystemWatcherの新しいインスタンスを作成することです。

0

MSDNは言う:コピーやファイルやディレクトリの移動など

いくつかの一般的な発生は、イベントに直接対応していませんが、これらの発生は、イベントが発生することになります。ファイルまたはディレクトリをコピーすると、そのディレクトリが監視されている場合、ファイルがコピーされたディレクトリにCreatedイベントが発生します。コピーしたディレクトリがFileSystemWatcherの別のインスタンスによって監視されていた場合、イベントは発生しません。たとえば、FileSystemWatcherのインスタンスを2つ作成します。 FileSystemWatcher1は「C:\ My Documents」を監視するように設定され、FileSystemWatcher2は「C:\ Your Documents」を監視するように設定されています。 「マイドキュメント」から「自分のドキュメント」にファイルをコピーすると、作成されたイベントはFileSystemWatcher2によって生成されますが、FileSystemWatcher1のイベントは発生しません。コピーとは異なり、ファイルやディレクトリを移動すると2つのイベントが発生します。前の例から、ファイルを "My Documents"から "Your Documents"に移動した場合、CreatedイベントはFileSystemWatcher2によって生成され、DeletedイベントはFileSystemWatcher1によって生成されます。

+0

これは、どのようにイベントが発生するかを示していますが、監視されているディレクトリが削除された後、「孤立した」FSWに何が起こるかについては何も教えてくれません。 –

関連する問題