2016-10-04 2 views
0

Ich verwende FileSystemWatcher, um Ereignisse zu erhalten, wenn sich ein Ordnerinhalt ändert. Es ist mir gelungen, nach Ereignissen zu suchen, wenn eine Datei hinzugefügt, gelöscht oder umbenannt wird, aber das Ereignis wird nicht ausgelöst, wenn ein neuer Ordner in dem Verzeichnis erstellt wird, das ich gerade sehe.FileWatcher löst kein Ereignis aus, wenn ein Ordner hinzugefügt wird

Ich habe mit den folgenden Ereignissen versucht:

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

Ich habe auch die folgenden zwei Eigenschaften festgelegt true sein, obwohl es nicht

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

Ist dies möglich mit FileSystemWatcher zu tun oder muss ich etwas anderes verwenden?

Dank

+0

Haben Sie versucht, 'NotifyFilters.DirectoryName' zu ​​verwenden? – smoksnes

+0

Kann es sein, dass Sie 'watch.Filter' irgendwo in Ihrem Code verwendet haben? – Fratyx

Antwort

2

Sie sind nicht Verzeichnisse

NotifyFilters.DirectoryName 

In Ihrem NotifyFilter.

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

so sollten Sie Setup Ihre NotifyFilter wie folgt:

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

Ich bestätige nicht und du hast es nicht erwähnt, aber Filter Satz mit möglicherweise eine diectory herauszufiltern, obwohl die docs spricht über Ruft die Filterzeichenfolge ab, die verwendet wird, um zu bestimmen, welche Dateien in einem Verzeichnis überwacht werden, oder legt diese fest.

+0

Ich glaube die enum Elemente: 'NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes Arbeit für Ordner oder Dateien, ob Sie 'NotifyFilters.DirectoryName' verwenden oder nicht – Ash

+0

@AshwinNair Das ist nicht wahr. Sie müssen 'NotifyFilters.DirectoryName' einschließen. – user3185569

+0

@rene Es ist erwähnenswert, dass ein bestimmter Filter wie' "* .txt" 'dieses Setup ruiniert. Es muss entweder nicht gesetzt oder auf irgendwas gesetzt sein ('" *. * "') – user3185569

Verwandte Themen