Enregistrer un fichier : 2 processus se battent !

Signaler
Messages postés
58
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
13 avril 2007
-
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006
-
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

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
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#]
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006

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 ).
Messages postés
60
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
16 avril 2006

"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