Je faisais joujou avec .net et je me suis dis, je vais tester la surveillance de fichiers/dossiers.
J'utilise la class FileSystemWatcher, avec celle-ci je regarde surveille les fichiers dans un dossier.
Quand le fichier est modifié, un événement appel la méthode copie(...). Ce que je ne comprend pas est pourquoi celle-ci est appelé 3 fois de suite avec que je n'enregistre les modification qu'une seule fois (j'utilise le notepad pour modifier le fichier surveillé)
Salut,
J'ai eu ce problème et je l'ai résolu en arrêtant la surveillance et en la redémarrant une fois le 1er déclenchement de l'event changed ou renamed peut importe.
Essais en rajoutant à la fin de ta méthode copie ceci:
fileSystemWatcher.EnableRaisingEvents = false
System.Threading.Thread.Sleep(500)
fileSystemWatcher.EnableRaisingEvents = true
Tout d'abord merci pour ta réponse. Mais le but du programme est de surveiller et si je mets en pause la surveillance, cela perd de son intérêt car je peux louper un événement.
Je ne vois pas en quoi tu va louper quelques choses....
J'ai mis un sleep entre l'arret et le démarrage de l'instance mais ce n'est pas obligatoire...tu auras le meme résultat sans
Entre le moment où EnableRaisingEvents passe à false puis à true, la surveillance est à l'arrêt.
Donc si un fichier est modifié, supprimé, créé, l'événement ne va pas s'éxécuter donc je peux pendant ce court instant louper un événement.
Tout à fait, mais, je prend le cas extrem, si on te demande de développer une application qui ne te permet pas de louper un événement. Je vais utiliser ta technique dans mon cas mais je me pose des questions sur le vrai sens de se comportement du framework.