2010-12-15 21 views
5

che sto usando FileSystemWatcher di monitorare la cartella A. se un file viene creato o copiato in quella cartella, verrà spostato nella cartella B.FileSystemWatcher non riesce con 1000 file creazioni

ho creato un file nella cartella A da fare clic con il tasto destro, selezionare "Nuovo", selezionare "Documento di testo". Il file viene spostato immediatamente nella cartella B. Ma se uso un programma per creare 1000 file nella cartella A, non vengono spostati nella cartella B. Come sembrerebbe FileSystemWatcher non può rilevare 1000 file creati dal programma.

Qualcuno può spiegare questo per me?

risposta

15

Sembra che un file 1000 supererà il buffer di FileSystemWatcher. Grande explanation here.

link Estratto:

Buffer Size e l'errore di evento

Le opere di classe FileSystemWatcher da catturando tutti i file rilevanti e cambiamenti più anziani e metterli in un buffer . Viene quindi elaborata una modifica alla volta fino a quando tutte le notifiche sono state gestite e il buffer è vuoto. Per impostazione predefinita, il buffer interno ha una dimensione di otto kilobyte (8192 byte). Ogni evento può richiedere fino a sedici byte del buffer per i suoi dati, escluso il nome del file . Ciò significa che quando ci sono un sacco di modifiche in un breve periodo di tempo , il buffer può rapidamente diventare sovraccarico e le notifiche possono essere perso.

Handling l'evento di errore corretto da FileSystemWatcher vi permetterà di codice per questa possibilità. Per esempio. Esaminare e/o operare sulla cartella dell'evento di errore con la propria logica ...

+0

Grazie Paul, hai ragione. Dopo aver aumentato la dimensione del buffer, il mio programma viene eseguito correttamente. – Linh

Problemi correlati