Bonjour
J'ai le code suivant qui me permet de construire un isolated storage contenant des données XML representant des champs de certaines table de ma base de donnée :

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
MonContext _context = new MonContext();
 
            try
            {
                using (var store = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    string directory = "Key";
                    store.CreateDirectory(directory);
                    string filePath = System.IO.Path.Combine(directory, "Key.txt"); //On concatène le nom du fichier et du dossier
 
                    if (!store.FileExists(filePath)) //On vérifie que le fichier n'existe pas déja
                    {
                        IsolatedStorageFileStream File =
                        store.CreateFile(System.IO.Path.Combine(directory, "Key.txt")); //On créé le fichier
                        File.Close(); //On ferme le stream
                    }
 
                    //debut try using streamWriter
                    try
                    {
                        using (StreamWriter sw =
                            new StreamWriter(store.OpenFile(filePath,
                                FileMode.Open, FileAccess.Write)))
                        {
                            //Debut récupération de la table ModeInterChange et ecriture dans l'isolated sptorage en XML
                            _context.Load(_context.GetModeInterChangeQuery());
                            _context.Load(_context.GetModeInterChangeQuery()).Completed += (sender, args) =>
                                {
                                    try
                                    {
                                        XElement ModeInterChanges = new XElement("ModeInterChanges");
                                        foreach (ModeInterChange modeinter in _context.ModeInterChanges)
                                        {
                                            ModeInterChanges.Add(new XElement("LabelModeInterChange", modeinter.LabelModeInterChange));
                                        }
                                        sw.WriteLine(ModeInterChanges);                                        
                                    }
                                    catch (Exception exModeInterchange)
                                    {
                                        MessageBox.Show(exModeInterchange.ToString());
                                    }
 
                                };
                            //Fin récupération de la table ModeInterChange et ecriture dans l'isolated sptorage en XML
 
                            //Debut récupération de la table typeGestionPortefeuille et ecriture dans l'isolated sptorage en XML
                            _context.Load(_context.GetTypeGestionPortefeuilleQuery());
                            _context.Load(_context.GetTypeGestionPortefeuilleQuery()).Completed += (sender, args) =>
                                {
                                    try
                                    {
                                        XElement typeGestionPortefeuille = new XElement("typeGestionPortefeuille");
                                        foreach (TypeGestionPortefeuille ObjecttypeGestionPortefeuille in _context.TypeGestionPortefeuilles)
                                        {
                                            typeGestionPortefeuille.Add(new XElement("LabelTypeGestionPortefeuille", ObjecttypeGestionPortefeuille.LabelTypeGestionPortefeuille));
                                        }                                        
                                        sw.WriteLine(typeGestionPortefeuille);
                                    }
                                    catch (Exception exTypeGestionPertefeuille)
                                    {
                                        MessageBox.Show(exTypeGestionPertefeuille.ToString());
                                    }
                                };
                            //Fin récupération de la table typeGestionPortefeuille et ecriture dans l'isolated sptorage en XML
 
 
 
 
                        } //Fin du using StreamWriter
                    }
                    catch (IsolatedStorageException ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
 
 
                }//Fin using store general
 
            }
            catch(Exception exStore)
            {
                MessageBox.Show(exStore.Message);
            }
Cepedant à l'execution du code et comme j'ai bien pris le soin de mettre des catch sur mes exception, le premier et le 2 eme catch me renvoie l'erreur suivante :

System.ObjectDisposedException : Impossible d'écrire dans un TextWriter fermé
pourtant j'ai bien pris le soin de mettre mon StreamWriter dans un using encapsulé par un blog try catch !!!

Vous avez une idée pour résoudre ce bug ?

Merci d'avance de votre attention