Libérer une ressource pour agir dessus

Résolu
ezechieladogli Messages postés 9 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 28 avril 2013 - 17 mars 2011 à 18:57
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 21 mars 2011 à 15:38
Bonjour
je suis un débutant en dotnet et j'utilise VS.NET 2003
J'écris une application qui permet d'accéder à un serveur de fichier image afin de les visualiser mais aussi avec la possibilité de supprimer celles qu'on veut.
Pour se faire je mappe un lecteur réseau pour accéder au répertoire partagé du serveur distant.
Mais voila lorsque je visualise un fichier et que je choisi de le supprimer, la commande file.delete me retourne un résultat genre "Cette ressource est utilisé par un autre programme."
Le message est le pareil même si je donne les valeurs nothing à mon picturebox.image

Quelqu'un voudrait-il bien m'aider (comment libérer le fichier après visualisation afin de pouvoir appliquer la commande file.delete)

Tks

4 réponses

Utilisateur anonyme
18 mars 2011 à 21:36
Salut,
C'est dommage qu'on ait pas le bout de code concernant le chargement de l'image dans le picturebox.
Voici une méthode qui permet de fermer correctement un flux une fois l'image chargée dans le picturebox :
        Dim fs As New IO.FileStream("image.jpg", IO.FileMode.Open)
        PictureBox1.Image = Image.FromStream(fs)
        fs.Close()

Bonne nuit.
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
19 mars 2011 à 17:53
Bonjour,
J'ai été confronté à ce problème. Si la solution de banana32 ne fonctionne pas, tu as cette solution que j'ai utilisé. Charger une autre image que tu auras mis dans Resources, cela libèrera la 1ère image. Cela donne:

PictureBox1.Image = Nothing
PictureBox1.Image = My.Resources.monimage        
System.Threading.Thread.Sleep(1000) 'on marque une pause de 1 seconde


Je pense qu'avec ceci cela devrait fonctionner.

Le Pivert
3
ezechieladogli Messages postés 9 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 28 avril 2013 1
21 mars 2011 à 12:59
Bonjour à tous
je viens d'implémenter la solution de banana32 qui a marché à merveille (merci chef).
J'ai voulu aussi tester ta proposition Le Pivert, voici l'adaptation du code :
Dim sr As String = Application.ExecutablePath.ToString.Replace("monappli.exe", "0_0.jpg")
picBox_old.Image = Nothing
picBox_old.Image = New System.Drawing.Bitmap(sr)
System.Threading.Thread.Sleep(1000)
File.delete(file2delete) 

sr contenant l'adresse d'une image vide qui remplacera celle qu'on supprime, et file2delete l'adresse de l'image à supprimer.
mais sur le file.delete(file2delete) j'ai toujours le message de "Ressource en cours d'utilisation par un autre processus"
entre autre j'ai augmenté le temps de pause à 2s mais rien.
Peut-être que je m'y prend mal peux tu m'éclairer ? (une autre corde à l'arc est toujours bien venue)
Tks

----L'énergie coule où va la penséé -------
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 mars 2011 à 15:38
Non, je n'ai rien à ajouter, si la solution de banana32 marche, c'est tant mieux. C'était au cas, car j'ai eu ce problème et j'ai galéré, j'avais 4 images temp à supprimer et cela a fonctionné pour moi.
Bonne programmation
3
Rejoignez-nous