Libérer une ressource pour agir dessus [Résolu]

Signaler
Messages postés
9
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
28 avril 2013
-
Messages postés
7421
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
-
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


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.
Messages postés
7421
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
124
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
Messages postés
9
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
28 avril 2013
1
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éé -------
Messages postés
7421
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 juin 2021
124
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