2016-03-30 14 views
2

をピックアップしていません。.NET FileSystemWatcherは、私は(私はとの問題はない)に移動<strong>ファイル</strong>に関する議論をたくさん見つけましたが、移動<strong>フォルダ</strong>(したがって、このポスト)への任意の特定されていない、移動したフォルダ

私は次のようにインスタンス化さFileSystemWatcherを持っている:

var fileWatcher = new FileSystemWatcher("C:\\mypath"); 
    fileWatcher.IncludeSubdirectories = true; 
    fileWatcher.NotifyFilter = NotifyFilters.LastWrite 
           | NotifyFilters.FileName 
           | NotifyFilters.CreationTime 
           | NotifyFilters.Size; 
    fileWatcher.Changed += OnChanged; 
    fileWatcher.Created += OnChanged; 
    fileWatcher.Deleted += OnDeleted; 
    fileWatcher.Renamed += OnRenamed; 
    fileWatcher.Error += WatcherOnError; 
    fileWatcher.EnableRaisingEvents = true; 

は、どんなに私がファイルに何をすべきか、私もして(私はフォルダに(移動)をドラッグがあれば、期待通りに発生したイベントを取得していませんその中のファイル)を監視フォルダにコピーすると、イベントはまったく発生しません。

私はWindows 10で動作しています(winの他のバージョンが同じように動作するかどうかはわかりません)。

誰でもフォルダの通知を取得する方法を知っていますか?

答えて

1

あなたが明示的にあなたのNotifyFilterNotifyFilters.DirectoryName含めないことによって、ディレクトリの変更を除いています。

ドキュメントにはlinkがありますが、暗黙のうちにのみ正しいです:-)私はあなたのコードを使用せずに余分なフラグを使って確認しました。

+0

ありがとう。そのフラグを追加すると、フォルダの移動に関する通知が表示されるようになりました(フラグのリストを見ていると完全に見逃していました)。 – peterc

1

奇妙な、これは私の作品:

void Main() 
{ 
    FileSystemWatcher fsw = new FileSystemWatcher(@"c:\Temp\"); 
    fsw.IncludeSubdirectories = true; 
    fsw.Changed += new FileSystemEventHandler(OnChanged); 
    fsw.EnableRaisingEvents = true; 

    while (true) { } 
} 

void OnChanged(object source, FileSystemEventArgs e) 
{ 
    // Specify what is done when a file is changed, created, or deleted. 
    Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType); 
} 
+0

返信いただきありがとうございます。はい、NotifyFiltersが設定されていないため、上記のように動作しました。そのため、以下で説明する 'NotifyFilters.DirectoryName'を含むすべてのデフォルトにする必要があります。 – peterc

関連する問題

 関連する問題