Effacer une image

warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009 - 8 août 2005 à 16:22
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 9 août 2005 à 01:09
bonjour
j'affiche une image dans une picture box.
a chaque fois que j'appel une nouvelle image j'ecrit son nom dans un fichier pour pouvoir les effacer
a la suite de ça lorsque je quitte, je lis le fichier, et je stoque les noms des images dans un string
mais je n'arrive pas a effacer la premiere image utilisée...

il me dit ça
Additional information: The process cannot access the file "b_8265_lain.jpeg" because it is being used by another process.

pourtant voila ce que je fais quand je veux effacer les images



if (File.Exists("temp.txt"))


{


pbimage.Dispose();


pbimage.Image =
null;


System.IO.StreamReader sr=
null;


sr =
new StreamReader("temp.txt");



string temp = sr.ReadToEnd();


sr.Close();



string [] split =
null;


split = temp.Split(';');



int i = 0;



string fichier;



while (split[i] !=
null)


{



if (File.Exists(split[i]))


File.Delete(split[i]);


i++;


}


}

la société de consommation porte mal son nom car un con fait rarement une sommation avant de dire une connerie en société

8 réponses

warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
8 août 2005 à 16:23
j'ai donc dans mon string split tous les noms des images que mon soft a telecharge
je comprend pas pourquoi ça marche pas alors que j'utilise pbimage.dispose(); pour liberer le controle picturebox

la société de consommation porte mal son nom car un con fait rarement une sommation avant de dire une connerie en société
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
8 août 2005 à 16:58
Salut, elle est bizarre ta boucle, avec un tableau il faut mieux utiliser une boucle for ou foreach.


string [] split =
"image1.bmp;image2.bmp;image3.bmp".Split(
';' );

foreach (
string s
in split )
{

if (
File.Exists( s ) )
{

File.Delete( s );
}
}
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
8 août 2005 à 17:03
exact je n'y ai pas pensé sur le coup :)
voila c'est modifié
mais ça ne resoud pas le probleme
note: c'est toujours la premiere image utilisée qui merde
j'ai donc essayé de faire un dispose a chaque fois que je change d'image mais ça ne change rien!

j'en ai maaaaaaaaaaaaareuuuu :(

la société de consommation porte mal son nom car un con fait rarement une sommation avant de dire une connerie en société
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
8 août 2005 à 17:38
Je ne vois pas trop, peut être la méthode Split qui ne renvoie pas ce que tu attends, tu as quoi comme résultat quand tu fais ca:

foreach ( string s in split )
{
MessageBox.Show( s );

}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
8 août 2005 à 22:27
elle me renvoi exactement ce que je veux
soit le nom des fichiers un par un
mais apparement elle marche bien puisqu'il essaye effectivement de supprimer un fichier qui est utilisé...
je comprend pas du tout pourquoi ça marche pas!

la société de consommation porte mal son nom car un con fait rarement une sommation avant de dire une connerie en société
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
8 août 2005 à 23:06
j'ai reussi a resoudre partiellement mon probleme
mais bon c'est pas tres propre:

je fais un Application.exit() avant le pbimage.dispose();
apres je supprime les image
toutes sont supprimé SAUF la derniere utilisée!!!
apres je refais un Application.exit() car sinon ça ne quitte pas...

la société de consommation porte mal son nom car un con fait rarement une sommation avant de dire une connerie en société
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
9 août 2005 à 00:12
bon
devant l'absence de solutions j'ai utilisé ça:

http://www.csharp.fr/forum.v2.aspx?id=334695

la société de consommation porte mal son nom car un con fait rarement une sommation avant de dire une connerie en société
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
9 août 2005 à 01:09
Le meilleur moyen de fermer une forme c'est Form.Close( ) mais tu peux aussi utiliser Application.Exit( ) pour fermer toutes les boucles de messages mais aprés Form.Close( ) sinon les événements Form.Closed et FormClosing ne sont pas déclenchés. Ces méthodes fonctionnent uniquement si une boucle de message à été créée sur le thread. Pour ce qui est de ton problème je pense que ce que tu veux faire c'est pas disposer la PictureBox mais disposer l'image de la PictureBox.

pictureBox.Image.Dispose( );
pictureBox.Image =
null;

Avec ça je n'ai plus l'erreur: The process cannot access the file "picture.jpeg" because it is being used by another process.
0
Rejoignez-nous