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

C# Discussion :

C# XML : Fichier déjà utilisé par un autre processus [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mathisdu42
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2013
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2013
    Messages : 168
    Par défaut C# XML : Fichier déjà utilisé par un autre processus
    Bonjour,

    Sur mon programme, je développe un système pour enregistrer les informations de connexion de l'utilisateur si il le souhaite. Le stockage des infos se fait dans un fichier XML à la racine du programme. Donc lorsque l'utilisateur va cocher "Retenir le nom d'utilisateur" et appuyer sur le bouton "Connexion", un fichier "infos.xml" va être crée avec à l'intérieur, son nom d'utilisateur. A l'inverse, si l'utilisateur ne souhaite plus que son nom d'utilisateur soit enregistrer, il décoche la checkbox et la même opération se produit sauf qu'à l'intérieur du fichier XML il y aura rien. Au lancement, le programme charge le fichier XML avec les infos qu'il y a dedans. Cela fonctionne mais le problème c'est que le programme utilise "Infos.xml" au Load de la Form et donc lorsque l'utilisateur va vouloir enregistrer ses informations de connexion en appuyant sur "Connexion", Visual Studio me dit
    "Infos.xml est déjà utilisé par un autre processus" c'est à dire que le processus c'est : mon programme.

    J'espère avoir été clair et précis, si ce n'est pas le cas, dites le moi !

    Le code : Form_load :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     XmlTextReader reader = new XmlTextReader("infos.xml");
     
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
     
                        case XmlNodeType.Text: 
                            metroTextBox1.Text = (reader.Value);
                            break;
                    }
                }
    Le code d'enregistrement : Si la Checkbox est à True ou False :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    if (metroCheckBox1.Checked == true)
     
                {
     
                        XmlTextWriter myXmlTextWriter = new XmlTextWriter("infos.xml", null);
                    myXmlTextWriter.Formatting = Formatting.Indented;
                    myXmlTextWriter.WriteStartDocument(false);
     
     
                    myXmlTextWriter.WriteStartElement("infos");
                    myXmlTextWriter.WriteStartElement("usrnm", null);
     
                    myXmlTextWriter.WriteElementString("usrnm", null, metroTextBox1.Text);
                    myXmlTextWriter.WriteStartElement("pswrd", null);
                    myXmlTextWriter.WriteElementString("pswrd", "");
                    myXmlTextWriter.Flush();
                    myXmlTextWriter.Close();
                    Console.ReadLine();
     
                        Form2 form2 = new Form2();
                        form2.ShowDialog();
     
     
                } else {
     
     
     
                            XmlTextWriter myXmlTextWriter = new XmlTextWriter("infos.xml", null);
                            myXmlTextWriter.Formatting = Formatting.Indented;
                            myXmlTextWriter.WriteStartDocument(false);
     
     
                            myXmlTextWriter.WriteStartElement("infos");
                            myXmlTextWriter.WriteStartElement("usrnm", null);
     
                            myXmlTextWriter.WriteElementString("usrnm", null, "");
                            myXmlTextWriter.WriteStartElement("pswrd", null);
                            myXmlTextWriter.WriteElementString("pswrd", "");
                            myXmlTextWriter.Flush();
                            myXmlTextWriter.Close();
                            Console.ReadLine();
     
                            Form2 form2 = new Form2();
                            form2.ShowDialog();
     
     
     
                    }
    Merci,
    Cordialement.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    SAlut

    utilise la méthode "Close"

  3. #3
    Membre confirmé Avatar de mathisdu42
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2013
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2013
    Messages : 168
    Par défaut
    Je dois l'utiliser ou ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    un Writer ou un reader s'utilise généralement de la façon que tu fais, sauf qu'en fin d'action, on fait un close...


    par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StreamReader reader = new StreamReader(@"c:\fichier.txt");
    ...
    reader.Close();

  5. #5
    Membre confirmé Avatar de mathisdu42
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2013
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2013
    Messages : 168
    Par défaut
    Ah oui ! Le problème c'est que ça a fonctionné une fois mais maintenant la même erreur apparait ici :

    Nom : aa.png
Affichages : 408
Taille : 39,0 Ko

    Ainsi que dans le "Else" sur la même ligne.

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    oui enfin,

    il faut fermer le StreamReader ou le StreamWriter une fois qu'ils ont été utilisés...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/01/2014, 07h15
  2. Réponses: 2
    Dernier message: 20/09/2010, 18h52
  3. Réponses: 22
    Dernier message: 02/10/2009, 10h31
  4. Réponses: 7
    Dernier message: 15/06/2007, 18h50
  5. Réponses: 7
    Dernier message: 23/03/2005, 22h23

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