2012-10-09 8 views
40

Wenn ich versuche, wie so die Beobachter Weg zu einer einzigen Datei zu setzen:Verwenden von Filesystemwatcher auf einer einzigen Datei in C#

watcher.Path = filePath1; 

bekomme ich den Fehler:

The directory name C:\Cromos 3.0\repository\diagnostics\dwm01_2011_06_13__09_03.LXD is invalid. 

Können Sie nur gesetzt den Pfad zu einem Ordnerverzeichnis?

+0

Watcher.Filter wird tun, was Sie brauchen. – Jay

+0

@Charleh, ich bin mir nicht sicher, ob ich dem zustimme, da FileSystemWatcher auch ein geändertes Ereignis bietet, also möchten Sie vielleicht wissen, wann eine bestimmte Datei geändert wird. –

+1

Ok das ist wahr, es ist eine Weile her, seit ich es benutzt habe - ich bin mir ziemlich sicher, dass ich gelesen habe, dass es manchmal unzuverlässig sein kann, wenn viele Änderungen/Dateien hinzugefügt/entfernt wurden usw. – Charleh

Antwort

79

Ihr Fehler ist die Einstellung der Path-Eigenschaft mit einem vollständigen Dateinamen

watcher.Path = Path.GetDirectoryName(filePath1); 
watcher.Filter = Path.GetFileName(filePath1); 

funktionieren sollte.

+1

macht Sinn, aber das Ereignis 'OnChanged' wird nicht aufgerufen, wenn ich den Dateiinhalt ändere. Ist es ein Problem, dass mein Dateisystemwächter innerhalb einer Klasse und nicht "Form1" ist? – Jimmy

+0

Sie müssten eine Instanz dieser Klasse ausführen, sonst wird kein Dateiwächter angezeigt. –

+19

gelöst! Ich hatte vergessen: 'watcher.EnableRaisingEvents = true;' – Jimmy

5

Ja, aber Sie können nach bestimmten Dateien suchen, indem Sie die Eigenschaft filter auf den Dateinamen setzen.

z.B.

watcher.Filter = "dwm01_2011_06_13__09_03.LXD"; 
+0

Danke! Weißt du, ob das funktioniert, wenn ich mehrere einzelne Seiten sehen möchte? h. Mein Dateisystemwächter befindet sich in einer Klasse "Page". Mehrere Instanzen der Klasse = mehrere einzelne Seiten werden beobachtet? – Jimmy

+0

Ja, ich verstehe nicht warum nicht. –

+0

Vielleicht, wenn statisch. Ein Page-Objekt wird entladen, nachdem es seine Antwort beendet hat. –

Verwandte Themen