2016-01-11 2 views
0

У меня есть этот код для обнаружения файлов удаления.FileSystemWatcher не обнаруживает удаление нескольких файлов

m_Watcher = new System.IO.FileSystemWatcher(); 
m_Watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; 
m_Watcher.Changed += new FileSystemEventHandler(OnCreated); 
m_Watcher.Created += new FileSystemEventHandler(OnChanged); 
m_Watcher.Deleted += new FileSystemEventHandler(OnDeleted); 
m_Watcher.Renamed += new RenamedEventHandler(OnRenamed); 
m_Watcher.EnableRaisingEvents = true; 



private void OnDeleted(object sender, FileSystemEventArgs e) 
{ 
    Debug.WriteLine(e.FullPath); 
} 

private void OnChanged(object sender, FileSystemEventArgs e) 
{ 
    Debug.WriteLine(e.FullPath); 
} 

Но когда я удалить несколько файлов с помощью сдвига обнаруживает только 1 файл.

Я знаю, что это должно быть исправлено с помощью метода WaitForChanged, но я понятия не имею, как его реализовать.

Классический код не помогает https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.deleted(v=vs.110).aspx

Спасибо за помощь!

+0

Вы установили свойства 'watcher.Path =" <путь> "' и 'watcher.Filters =" <пустые для всех типов файлов> "'? хотя это слишком наивно, чтобы спросить. Но ваш фрагмент кода здесь не показывает его. – vendettamit

+1

Похоже на следующее четырехлетнее решение: http://stackoverflow.com/a/8442063/1845672 – Roland

+0

@vendettamit Да, это так. –

ответ