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

ezechieladogli 9 Messages postés samedi 11 octobre 2008Date d'inscription 28 avril 2013 Dernière intervention - 17 mars 2011 à 18:57 - Dernière réponse : cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention
- 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
Afficher la suite 

4 réponses

Répondre au sujet
Utilisateur anonyme - 18 mars 2011 à 21:36
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 19 mars 2011 à 17:53
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Le Pivert
ezechieladogli 9 Messages postés samedi 11 octobre 2008Date d'inscription 28 avril 2013 Dernière intervention - 21 mars 2011 à 12:59
+3
Utile
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éé -------
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ezechieladogli
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 21 mars 2011 à 15:38
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.