Le processus ne peut pas accéder au fichier...

Résolu/Fermé
arion320 Messages postés 233 Date d'inscription lundi 20 décembre 2010 Statut Membre Dernière intervention 4 février 2022 - 2 janv. 2017 à 03:59
 fouad - 28 oct. 2022 à 14:24
Bonjour,

Je me casse à fond la tête sur ma programmation mais je ne sais vraiment plus quoi faire.
J'ai tenter de créer un logiciel qui télécharge une image vers les fichiers temporaires avec ce code dans un module :


My.Computer.Network.DownloadFile("https://i39.servimg.com/u/f39/18/06/99/75/photo-10.jpg", My.Computer.FileSystem.SpecialDirectories.Temp & "\image1.png", False, 500)


puis il le lis dans la form2, dans une PictureBox avec ce code :


Private _Bitmap As Bitmap
Private _BitmapHover As Bitmap

If My.Computer.FileSystem.FileExists(My.Computer.FileSystem.SpecialDirectories.Temp & "\image1.png") Then
_Bitmap = New Bitmap(175, 175)
Using g = Graphics.FromImage(_Bitmap)
g.DrawImage(System.Drawing.Image.FromFile(My.Computer.FileSystem.SpecialDirectories.Temp & "\image1.png"), 0, 0, 175, 175)
End Using
PictureBox1.BackgroundImage = _Bitmap
End If


Mais l'image peut varié, c'est donc pour cela qu'à chaque Button1_click de la form1 j'ai ajouté ce code avant de lancer la form2 :


My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.Temp & "\image1.png")


Mais le problème c'est qu'une erreur apparaît :

« Une exception non gérée du type 'System.IO.IOException' s'est produite dans mscorlib.dll

Informations supplémentaires : Le processus ne peut pas accéder au fichier 'C:\Users\Simon\AppData\Local\Temp\image1.png', car il est en cours d'utilisation par un autre processus.
»

J'ai donc chercher attentivement sur le net et le seul et unique problème similaire que j'ai trouvé c'est : https://www.developpez.net/forums/d9138/dotnet/developpement-windows/windows-forms/vb-net-supprimer-fichier-utilise/

Je me suis dis, ça peut le faire si je fais :


Kill(Form2.Picturebox1.backgroundimage)


Mais ça ne fonctionne pas. Du coup je suis vraiment perdu là. Quelqu'un aurait une solution ?

Merci d'avance.


6 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié par cs_Le Pivert le 5/01/2017 à 18:18
En fermant l'application et en l'ouvrant aussitot, comme ceci:

Me.Close() 'ferme l'application
Process.Start(Application.ExecutablePath) 'ouvre l'application


en ayant pris soin de mettre ton code de suppression de fichier dans l’événement d'ouverture de ton appli

  Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load


@+ Le Pivert
1