FileSystemWatcher fonctionne 1 fois ?
Bonjour à tous,
Je tombe devant un problème et n'arrive pas à le résoudre. J'en connais la cause, mais n'ai pas de solution. Si vous en avez une ça serait super cool.
Mon probleme :
- J'utilise un FileSystemWatcher pour détecter la création/effacement d'un fichier dans un répertoire distinct.
- Lorsque le fichier est détecté, l'Event réalise un parsing de ce fichier (.xml).
- Tant que le fichier est présent, une part du programme (un timer) est arrêté.
- Lorsque le fichier est effacé, le programme reprend son court... (Timer.enabled = true...).
Cette détection fonctionne la 1ere fois qu'il détecte le fichier (cycle de création/effacement).
En revanche, lorsque le fichier est créée une 2eme fois, cela ne fonctionne plus et VB me renvoie une erreur comme quoi le fichier est déjà utilisé... humm!! ce qui n'est pas le cas.
Ci-dessous le code du filesystemwatcher :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
Imports System.IO
Public Sub initFsWatcher()
' Répertoire à surveiller
myFsWatcher.Path = mySetupData.xml_datas
' Surveille les sous répertoires
myFsWatcher.IncludeSubdirectories = False
' Surveille tous les fichiers sans exception ou bien un fichier en particulier
myFsWatcher.Filter = mySetupData.MatchDataFile
' Surveille les types d'évènements suivants = Changement sur le fichier (création/changement du fichier/renomage/effacement)
myFsWatcher.NotifyFilter = NotifyFilters.FileName
' Permet de faire s'exécuter tous les EventHandlers dans le thread principal
myFsWatcher.SynchronizingObject = Me
' Active la levée d'évènements par le FileSystemWatcher
myFsWatcher.EnableRaisingEvents = True
AddHandler myFsWatcher.Created, AddressOf myFsWatcher_Created ' Création d'un fichier
AddHandler myFsWatcher.Deleted, AddressOf myFsWatcher_Deleted ' Effacement d'un fichier
End Sub
Public Sub myFsWatcher_Created(sender As System.Object, e As System.IO.FileSystemEventArgs) 'Handles myFsWatcher.Created
' Fichier trouvé dans le répertoire, lancement du parser... et arrêt d'un timer...
End Sub
Public Sub myFsWatcher_Deleted(sender As System.Object, e As System.IO.FileSystemEventArgs)
' ici la gestion quand le fichier est effacé.... relancement d'un timer...
End Sub |
Afin de vérifier mon code, j'ai "remplacé" l'action du FileSystemWatcher par 2 boutons avec le même code que Sub myFsWatcher_Created et Sub myFsWatcher_Deleted. Cela fonctionne parfaitement...
Donc mon probleme semble venir d'une ré-initialisation du Watcher, peut-être... ou bien ai-je oublié qlq chose dans le Sub initFsWatcher() ?
Merci de votre aide.
Patrick