Bonjour à tous,
J'ai un petit soucis d'écriture XML en C#, je sais d'où ça vient du moins je pense savoir mais je ne sais pas comment le règler.
Donc en fait je crée un fichier xml qui est initialisé à l'ouverture du formulaire, je clique sur le bouton lancer et j'écris des données dedans en boucle jusqu'à ce que je clique sur arrêter. Et quand je veux relancer l'écriture, j'ai une exception qui est gérée, celle-ci :
Write Start Document doit être le premier appel
Quelqu'un a t'il une proposition pour moi ?
Et voilà le code en partie :
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
    public partial class F_Temperature : Form
    {
        XmlTextWriter ReleveSonde = new XmlTextWriter("releveTemperature.xml", System.Text.Encoding.UTF8);
 
private void B_Lancer_Click(object sender, EventArgs e)
        {
            try
            {
                ReleveSonde.WriteStartDocument();
                ReleveSonde.Formatting = Formatting.Indented;//présentation du fichier xml sous une forme claire
                ReleveSonde.WriteComment("Relevés de la sonde"); // commentaire
                ThreadStart delegue = new ThreadStart(Consult);
                this.monThread = new Thread(delegue);
                this.monThread.Start();
            }
            catch (Exception xml)
            {
                MessageBox.Show(xml.Message.ToString());
            }
        }
 
        private void B_Arret_Click(object sender, EventArgs e)
        {
            // Stop le thread
            this.monThread.Abort();
            ReleveSonde.WriteEndElement();//fin d'écriture du fichier xml
            ReleveSonde.Flush();
            ReleveSonde.Close();
        }
        //dans la boucle j'écris de cette façon 
        ReleveSonde.WriteStartElement("releve");
        ReleveSonde.WriteElementString("moment", DateTime.Now.ToString() + "," + DateTime.Now.Millisecond.ToString());
        ReleveSonde.WriteElementString("temperature", valeur);
        ReleveSonde.WriteEndElement();
        ReleveSonde.Flush();// efface les mémoires tampons du flux
Merci d'avance pour votre aide