2016-10-04 4 views
0

Я использую FileSystemWatcher для получения событий при изменении содержимого папки. Мне удалось успешно следить за событиями, когда файл добавляется, удаляется или переименовывается, но событие не запускается, когда новая папка создается в каталоге, который я просматриваю.FileWatcher не запускает событие при добавлении папки

Я пытался со следующими событиями:

watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size | NotifyFilters.Attributes; 

Я также установить следующие два свойства, чтобы быть true, хотя это не помогло

watcher.EnableRaisingEvents = true; 
watcher.IncludeSubdirectories = true; 

Возможно ли это сделать с FileSystemWatcher или мне нужно использовать что-то еще?

Благодаря

+0

Вы пытались использовать 'NotifyFilters.DirectoryName'? – smoksnes

+0

Может быть, вы использовали 'watch.Filter' в любом месте своего кода? – Fratyx

ответ

2

Вы не включаете каталоги

NotifyFilters.DirectoryName 

В вашем notifyfilter.

См https://msdn.microsoft.com/en-us/library/system.io.notifyfilters(v=vs.110).aspx

так что вы должны настроить ваш notifyfilter следующим образом:

watcher.NotifyFilter = NotifyFilters.DirectoryName | 
         NotifyFilters.LastAccess | 
         NotifyFilters.LastWrite | 
         NotifyFilters.FileName | 
         NotifyFilters.Size | 
         NotifyFilters.Attributes; 

Я не проверял, и вы не упоминать об этом, но имеющие Filter набор может отфильтровать diectory, хотя docs говорит о Получает или задает строку фильтра, используемую для определения того, какие файлы отслеживаются в каталоге.

+0

Я верю элементы перечисления: 'NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes' для работы с папками или файлами независимо от того, используете ли вы 'NotifyFilters.DirectoryName' – Ash

+0

@AshwinNair Это неверно. Вы должны включить 'NotifyFilters.DirectoryName' – user3185569

+0

@rene. Следует учитывать, что конкретный фильтр, такой как' '* .txt,' 'разрушает эту установку. Он должен быть либо не установлен, либо установлен на что угодно ('' *. * "') – user3185569