Enregistrer un fichier : 2 processus se battent !

Messages postés
58
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
13 avril 2007
- - Dernière réponse : Le_proprio_de_mykeyes
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
- 16 avril 2006 à 03:36
J'aimerais enregistrer un fichier, et avec un savefiledialog laisser l'utilisateur choisir la destination.
Voici mon code:

private void menuSave_Click(object sender, EventArgs e)
{
Stream myStream;

DlgSave.Filter = "Pacman Files (*.pac)|*.pac|All files (*.*)|*.*";

DlgSave.RestoreDirectory = true;

DlgSave.Title = "Enregistrement";

if (DlgSave.ShowDialog() == DialogResult.OK)
{ if ((myStream DlgSave.OpenFile()) null)
{ myStream.Close(); }
else
{ this.MySaveName = this.DlgSave.FileName; }
}
myStream.Close();
MessageBox.Show(this.MySaveName);
SaveGame(This.MySaveName);
timer.Enabled = true;
}

Dans MySaveName j'ai bien la destination complete ( c:\xxxxx)

Je la recupere dans ma fct SaveGame(string SaveLocation)

void SaveGame(string SaveLocation)
{
// *** Ecriture dans le fichier ***
StreamWriter Fichier;
Fichier = File.CreateText(this.SaveLocation);
string Line = "xxx";
Fichier.WriteLine(Line);
Fichier.Close();
}

Des que le programme arrive sur la ligne en rouge il me dit :"The process cannot access the file because it is being used by another process." Donc à mon avis j'oublie de fermer mon stream ou mon fichier quelque part mais pas moyen de trouver ou...
Personne n'a une idée ??

Merci d'avance
Afficher la suite 

3 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
private void menuSave_Click(object sender, EventArgs e)
{
Stream myStream;

DlgSave.Filter = "Pacman Files (*.pac)|*.pac|All files (*.*)|*.*";

DlgSave.RestoreDirectory = true;

DlgSave.Title = "Enregistrement";

if (DlgSave.ShowDialog() == DialogResult.OK)
{ if ((myStream DlgSave.OpenFile()) null)
{ myStream.Close(); }
else
{ this.MySaveName = this.DlgSave.FileName; }
}
myStream.Close();
myStream.Dispose();
MessageBox.Show(this.MySaveName);
SaveGame(This.MySaveName);
timer.Enabled = true;
}


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
Selon moi tu dois oublier de fermer ton Stream dans SaveGame( this.MySaveName ). À toi de vérifier.

Petit conseil:Au lieu d'utiliser un Stream dans menuSave_Click tu devrais mettre System.IO.File.Exists( DlgSave.FileName ).
Commenter la réponse de Le_proprio_de_mykeyes
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
0
Merci
"Selon moi tu dois oublier de fermer ton Stream dans SaveGame( this.MySaveName ). À toi de vérifier." < Laisse tomber cette partie, il s'agit d'une erreur

--------------------------------------------------
David L.Pratte, Administrateur
Mykeys Software Foundation
Making dreams into programs / Du rêve au programme
Demandes acceptées gratuitement
Commenter la réponse de Le_proprio_de_mykeyes