Gestion de l'IOException suivante
Bonjour à tous ,
Voici l'exception que je rencontre :
Citation:
IOException : The process cannot access the file because it is being used by another process.
Voici, en gros, mon traitement : J'enregistre la valeur de chaque contrôle présent sur une Form de type Frm_Navette dans le cas ci-dessous. Comme j'écris d'autres informations avant les valeurs des contrôles (TextBox, DateTimePicker, ComboBox...) je passe en paramètre le flux d'écriture :
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
|
Private Sub EnregistrerFichier(ByRef Frm_Active, ByVal Path)
Dim Str_Writer As StreamWriter = New StreamWriter(CType(Path, String))
If Frm_Active.GetType.Equals(GetType(Frm_Navette)) Then
Sauvegarde_Controles(Frm_Active.Tbl_Fiche_Navette, Str_Writer, Path)
' Si la form est d'un certain type, j'appelle ma fonction de sauvegarde
End If
Str_Writer.Close() ' Fermeture du flux
Directory.Move(Path_Old_Troncon, Path_New_Troncon) ' on déplace le contenu d'un répertoire existant (qui contient le fichier texte que
'je viens de créer avec ces 2 méthodes) vers un autre que
'j'ai créé dans une autre portion de code.. et qui existe aussi, j'ai vérifié dans mon debug.
' Pourtant l'exception mentionnée ci-dessus apparaît ici.
End Sub
Private Sub Sauvegarde_Controles(ByVal Conteneur As Object, ByVal Str_Writer As StreamWriter, ByVal Path_File As String)
For Each ctrl As Object In Conteneur.Controls
If TypeOf ctrl Is TableLayoutPanel Or TypeOf ctrl Is Panel Then
Sauvegarde_Controles(ctrl, Str_Writer, Path_File)
' C'est une fonction récursive qui s'affranchit du nombre de conteneurs
Else ' Traitement lorsque l'on arrive sur les contrôles à sauvegarder
...
End If |
L'exception apparaît donc lors de la tentative de déplacement de répertoire. Dans mes essais, le répertoire de départ ne contenait que le fichier créé ci-dessus. J'ai essayé en le supprimant avant d'exécuter le Directory.Move, en mode pas-à-pas et l'exception est tout de même levée... Donc cela ne semble pas venir du fichier.
Selon vous pourquoi ai-je cette exception alors que le seul flux utilisé sur le seul fichier du répertoire est refermé?
Cela peut-il venir d'un process sur le répertoire de départ?
J'espère avoir été assez clair,, :bug:
Merci de vos réponses.
Nixar