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
Citation:
"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:
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:
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.