Impossible d'écrire dans un TextWriter fermé
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:
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 :
Citation:
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