IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Gestion de l'IOException suivante


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Par défaut Gestion de l'IOException suivante
    Bonjour à tous ,
    Voici l'exception que je rencontre :
    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 : 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
     
    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,,

    Merci de vos réponses.

    Nixar

  2. #2
    Membre éclairé Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Par défaut Maj
    ReBonjour à tous,
    Après investigations j'ai des précisions à apporter sur mon problème:
    J'ai codé une fonction qui fait la même chose que directory.move, mais j'ai pu voir ce qui levait l'exception : c'est le fait de toucher au répertoire de départ (celui qui contient le tout avant la mnip de déplacement).

    Je ne pensais pas que ce type d'exception pouvait être levée sur un répertoire...

    The process cannot access the file 'L:\Documents and Settings\Nixar\Bureau\07050\Tronçon n°1' because it is being used by another process.
    Quelle action peut bloquer le suppression d'un répertoire?

    Merci pour vos réponses...

    Nixar

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 124
    Par défaut
    Ton stream ne serait il pas toujours ouvert pendant que tu essaye de deplacer ton repertoire ?

  4. #4
    Membre éclairé Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Par défaut
    Bonjour,
    Non que ce soit mon StreamReader ou mon StreamWriter, ils sont fermés tous les 2. J'ai même essayé de faire suivre chaque ligne de code du style
    par
    Mais cela n'a rien changé... Mais un flux peut être être ouvert sur un répertoire uniquement?

Discussions similaires

  1. Gestion d'une app suivant la version iOS
    Par Calagan74 dans le forum Développement iOS
    Réponses: 6
    Dernier message: 22/12/2014, 21h49
  2. Réponses: 2
    Dernier message: 12/01/2010, 13h53
  3. Réponses: 3
    Dernier message: 03/12/2008, 15h18
  4. gestion d'un utilisateur suivant son role
    Par aileen dans le forum Langage
    Réponses: 2
    Dernier message: 14/04/2008, 12h43
  5. Gestion page suivante page précédante pour l'affichage
    Par sylvie.forum dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 26/03/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo