salut,
j'ai un petite question concernant le composant FileSystemWatcher .. je l'utilise pour surveiller les modifications en écriture des fichiers d'un répertoire ... comme il est prévu pour ceci, ca tombe bien
"le but sera a terme d'avoir un "service" en tache de fond qui va sauvegarder automatiquement un fichier a chaque modif dans une archive RAR afin de garder une trace de toutes les modifications et de pouvoir facilement remonter a une ancienne version"
le problème c'est que ce FileSystemWatcher exécute plusieurs fois de suite le même évènement pour le même fichier quand je sauvegarde mon fichier de test ... le nombre de déclenchement de l'évènement varie de 2 a 5 :
par contre si je fais glisser un fichier dans le répertoire surveillé je n'ai bien qu'un seul déclenchement de l'évènement ...Changed / test4.html / 22/09/2008 19:53:18
Changed / test4.html / 22/09/2008 19:53:18
Changed / test4.html / 22/09/2008 19:53:18
Changed / test4.html / 22/09/2008 19:53:18
voici le code de test :
j'ai cherché/testé pour vérifier si le nombre de déclenchement avait un rapport avec la taille du fichier mais c'est non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 private void Form1_Load(object sender, EventArgs e) { this.fileSystemWatcher1 = new FileSystemWatcher(@"E:\Mes images\_x"); this.fileSystemWatcher1.EnableRaisingEvents = true; this.fileSystemWatcher1.IncludeSubdirectories = true; NotifyFilters filtre = NotifyFilters.LastWrite; this.fileSystemWatcher1.NotifyFilter = filtre; this.fileSystemWatcher1.Changed += new System.IO.FileSystemEventHandler(this.fileSystemWatcher1_Ecriture); } private void fileSystemWatcher1_Ecriture(object sender, System.IO.FileSystemEventArgs e) { if (File.Exists(e.FullPath)) { FileInfo file = new FileInfo(e.FullPath); Console.WriteLine(e.ChangeType + " / " + file.Name+" / "+file.LastWriteTime); } else if (Directory.Exists(e.FullPath)) { DirectoryInfo dir = new DirectoryInfo(e.FullPath); Console.WriteLine(e.ChangeType + " / " + dir.Name + " / " + dir.LastWriteTime); } }
le seul indice que j'ai pu trouver c'est en sauvegardant le fichier de test avec différents éditeur de texte, suivant l'éditeur le nombre de déclenchement change
mes tests portent sur des fichiers HTML/TXT de 20Ko, je vois pas trop l'éditeur le sauvegarder en plusieurs fois, donc je comprends pas ce comportement
vous avez une idée pour avoir qu'un seul déclenchement d'évènement lors de la sauvegarde/modification du fichier ?
merci
Partager