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 : 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
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