2012-10-09 4 views
40

Quando provo a impostare il percorso osservatore in un unico file in questo modo:Usa FileSystemWatcher su un singolo file in C#

watcher.Path = filePath1; 

ottengo l'errore:

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

Potete impostare solo la percorso per una directory di cartelle?

+0

watcher.Filter farà quello che ti serve. – Jay

+0

@Charleh, non sono sicuro di essere d'accordo, dato che FileSystemWatcher fornisce anche un evento modificato, quindi potresti voler sapere quando un file specifico viene cambiato. –

+1

Ok è vero, è passato un po 'di tempo da quando l'ho usato - sono sicuro di aver letto che a volte può essere inaffidabile quando vengono aggiunti/rimossi un gran numero di modifiche/file ecc. – Charleh

risposta

79

Il tuo errore è l'impostazione della proprietà Sentiero con un nome di file completo

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

dovrebbe funzionare.

+1

ha senso ma l'evento 'OnChanged' non viene chiamato quando cambio il contenuto del file. È un problema che il mio filesystemwatcher si trovi in ​​una classe e non in "Form1"? – Jimmy

+0

Dovresti avere un'istanza di quella classe in esecuzione, altrimenti non ci sarà nessun filewatcher. –

+19

risolto! Avevo dimenticato: 'watcher.EnableRaisingEvents = true;' – Jimmy

5

Sì, ma è possibile guardare file specifici impostando la proprietà filtro sul nome file.

ad es.

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

Grazie! Sai se questo funzionerà se voglio vedere più pagine singole. Ad esempio, il mio filesystemwatcher è all'interno di una classe 'Page'. Più istanze della classe = più pagine singole vengono guardate? – Jimmy

+0

Sì, non vedo perché no. –

+0

Forse, se statico. Un oggetto Page verrà scaricato dopo aver terminato la sua risposta. –