PDA

View Full Version : [C#] filewatcher considera duplica gli eventi


sowdust
09-08-2011, 13:23
Buongiorno a tutti,

sto scrivendo (grazie al suggerimento di gugoXX) un filewatcher che monitori una cartella ed esegua dei comandi ogni volta che un file nella cartella viene modificato (nello specifico i file vengono sovrascritti via ftp).

questa è la classe che viene chiamata:

private static void OnChanged(object source, FileSystemEventArgs e)
{
.
Console.WriteLine("File: " + e.Name + " " + e.ChangeType);
// the resto of the commands that are executed when a file is overwritten
}


e questa è la porzione di codice nella quale si richiama la classe

public static void Run()
{
string pathToWatch = "C:\\Documents and Settings\\aa";
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = pathToWatch;
watcher.NotifyFilter = NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Changed += new FileSystemEventHandler(OnChanged);

watcher.EnableRaisingEvents = true;

}

il problema è che ogni volta che un file viene modificato, l'avviso su console appare due volte di seguito e i comandi vengono eseguiti due volte (in questo caso vengono aperte due istanze di matlab).

Ora, al problema può essere messa una pezza in diversi modi, ma come mai succede così?

U235
09-08-2011, 14:26
ciao, ti viene notificato una volta per ogni azione, ovvero immaginando che modifichi un nome file, ne hai uno per "NotifyFilters.FileName " e uno per "NotifyFilters.LastWrite". o almeno così dovrebbe essere.

vecchia
09-08-2011, 16:46
penso che se vuoi solo triggare l'evento che viene postato quando modifichi un file (nel tuo caso lo sovrascrivi) ti basti usare il filtro NotifyFilters.LastWrite