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

Résolu/Fermé
Signaler
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
-
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
-
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.


A voir également:

6 réponses

Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
Bonjour,

Oui, avec une petite astuce, mettre une autre image à la place au moment de la modification, comme ceci:

Form2.PictureBox1.Image = Nothing
        Form2.PictureBox1.Image = My.Resources.essai


en ayant mis auparavant une image nommée "essai" dans les Resources

Voilà
1
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
Bonjour @cs_Le Pivert et bonne année !

Ah oui je n'ai pas penser à faire une modification pour que le processus "lâche" l’image en question.

Je vais essayer ça je vous tiens au courant.

Merci d'avance :)
0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
Après avoir essayé cette solution effectivement ça fonctionne parfaitement, c'était pourtant si simple. Merci beaucoup pour votre réponse j'espère que la suite sera plus simple haha. Bon vent l'ami !
0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
Après avoir réessayé pendant l'utilisation du logiciel, il se trouve que le problème persiste pourtant tout est en place. Vous êtes sûr qu'il n'y à pas un "Kill" pour la picturebox ?

Merci d'avance
0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
J'ai une autre idée, il y aurait-il un moyen de réinitialiser la form pour qu'il ne prenne plus en compte l'image ?
0
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
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
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
Comme ceci:

  Form2.PictureBox1.Image.Dispose()
Form2.PictureBox1.Image = Nothing
        Form2.PictureBox1.Image = My.Resources.essai
My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.Temp & "\image1.png")
 




0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
Toujours pas, j'ai penser que le problème venait sûrement de la condition que j'ai poser avant l'action :


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

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

End If


Donc j'ai essayé avec un simple try :


Try

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

End Try


Mais le problème c'est qu'il me dit que le fichier existe déjà.
0
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
Sujet très instructif ça m'a appris de nouvelles lignes mais le problème c'est au niveau de la procédure de suppression. Quand la fenêtre de suppression s'affiche ça me met une erreur me disant que le fichier est utilisé par vshost32.exe donc visual studio et pareil hors Debug.

Je suis désespéré..
0
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
D'après ce que je lis:

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 :

Tu peux ouvrir la nouvelle image dans ta PictureBox sans supprimer l'ancien fichier!

A ce moment là tu supprimes ton ancien fichier à la prochaine ouverture de ton appli, c'est radical!

En ayant mis tous tes fichiers dans un dossier spécifique.
C'est ce que j'ai fait dans ce programme:

https://codes-sources.commentcamarche.net/source/view/101787/1439824


@+ Le Pivert
0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
Oui justement je l'ai mis à chaque lancement de la form2 mais c'est bien ça le problème, ça ne fonctionne pas. Il me semble que sur mon poste j'avais vu une réponse intéressante que je ne retrouve plus ni ici-même ni dans mes email pourtant ça avait l'air intéressant. Il parlait de mettre le mode "Strict" en activé et la suite par contre je ne me souviens plus j'avais regarder vite fait. Je vais voir si ça fonctionne en mettant l'option strict
0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
L'option strict me créer des erreurs en me précisant qu'il n'accepte pas les « DownloadFile, etc... » je ne comprends plus rien
0
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
J'ai l'impression que tu n'as pas lu la totalité de mon dernier message!

A ce moment là tu supprimes ton ancien fichier à la prochaine ouverture de ton appli, c'est radical!


Je parle de l'appli et non du Form2!
0
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
675
0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
Oui mais justement, moi je voudrais que ça se fasse autrement qu'au lieu d'être obliger de redémarrer le logiciel.. Pour l'utilisateur c'est compliqué.
0
Messages postés
233
Date d'inscription
lundi 20 décembre 2010
Statut
Membre
Dernière intervention
24 avril 2021
22
Ma dernière réponse avec le code complet s'est pas envoyé ! :@ :@ :@

Bref tant pis, en tout cas problème résolu, merci cs_Le Pivert pour ta patience et tes explications. À bientôt l'ami !
0