Di recente ho dovuto utilizzare
System.IO.FileSystemWatcher per osservare una cartella ed accorgermi della
creazione di nuovi files al suo interno.In quell'occasione ho fatto
esperienza di comportamenti anomali legati agli eventi di notifica dei
cambiamenti nei files o cartelle.Il caso fastidioso si verifica quando un
file di grosse dimensioni arriva nella cartella: l'evento Created viene sparato
quando inizia la scrittura fisica su disco, e non alla fine. Se all'interno del
metodo legato all'evento si cerca di aprire il file si ottiene una bella
eccezione di tipo System.IOException.
using System;using System.IO;namespace FSWTest{ class Program { static void Main(string[] args) { FileSystemWatcher fsw = new FileSystemWatcher(@"C:\Temp\FSWTest"); fsw.Created += new FileSystemEventHandler(fsw_Created); fsw.EnableRaisingEvents = true; Console.Read(); } static void fsw_Created(object sender, FileSystemEventArgs e) { Console.WriteLine("{0} {1}", e.ChangeType, e.Name); } }}
I miei colleghi ed io ipotizzavamo che questo
comportamento fosse dovuto ad un baco del...