The process cannot access the file ... because it is being used by another proce [Résolu]

Chiche69 34 Messages postés mercredi 24 juin 2009Date d'inscription 25 septembre 2010 Dernière intervention - 12 août 2009 à 10:38 - Dernière réponse : msb2006 5 Messages postés dimanche 21 mai 2006Date d'inscription 27 décembre 2009 Dernière intervention
- 27 déc. 2009 à 02:57
Bonjour

J'ai un probleme que je n'arrive pas a resoudre. J'ai un programme qui me permet de faire des captures d'images, et des enregistrements videos. Lorsque je souhaite supprimer les captures d'images le programme se stop et j'ai l'erreure suivante :

The process cannot access the file 'D:\Patients Directories\Images\4-8-2009 16h29m4s.bmp' because it is being used by another process.

si je force le debuggage il supprime normalement le fichier.

voici une partie de mon code:


Private Sub btnDeleteSelected_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteSelected.Click
Dim Response As MsgBoxResult
Dim SelectedImageIndex As Integer
Dim SelectedImagePath As String
Dim PictureType As String
Dim Fichier As String
Dim SelectedVideoPath As String
Dim Index As String = ListView1.SelectedItems.Count - 1

Response = MsgBox("Do you really want to delete this Image from your computer ?", MsgBoxStyle.YesNo)
If Response = MsgBoxResult.Yes Then

For c As Integer = 0 To Index
'SelectedImageIndex = ListView1.FocusedItem.ImageIndex 'index de l'image selectionnee
SelectedImagePath = ListBoxVirtuelle.Items.Item(0)
Fichier = System.IO.Path.GetFileName(SelectedImagePath).Split(".")(0) 'Donne le nom du fichier sans l'extension
PictureType = System.IO.Path.GetExtension(SelectedImagePath) 'Donne l'extension de l'image selectionnee


ListBoxVirtuelle.Items.Clear()
ListView1.Items.Clear()
ImageList1.Images.Clear()
PictureBox1.Dispose()
AxltmmCaptureCtrl1.Dispose()
AxltmmPlayCtrl1.Dispose()
ImageList2.Images.Clear()

File.Delete("D:\Patients Directories\Images" & Fichier & PictureType) L'erreur est ici
'My.Computer.FileSystem.DeleteFile("D:\Patients Directories\Images" & Fichier & PictureType)
LoadImage()
Next


Else
End If
End Sub


Public Sub LoadImage()
l = 1
ListView1.Items.Clear()
CurrentImageList.Images.Clear()
ListBoxVirtuelle.Items.Clear()
Dim Fichier As String

For Each foundImage As String In _
My.Computer.FileSystem.GetFiles( _
"D:\Patients Directories\Images", _
FileIO.SearchOption.SearchTopLevelOnly, "*.gif*", "*.jpg*", "*.bmp*")
Dim PictureType As String = System.IO.Path.GetExtension(foundImage)
CurrentImageList.Images.Add(Image.FromFile(foundImage))
Fichier = System.IO.Path.GetFileName(foundImage).Split(".")(0) 'Donne le nom du fichier sans l'extension

ListView1.Items.Add(New ListViewItem(New String() {Fichier}, l - 1))
ListView1.View = View.LargeIcon
ListBoxVirtuelle.Items.Add(foundImage)
l = l + 1
Next
lblNombreFichiers.Text = "Nombre de fichier(s) : " & ListView1.Items.Count

End Sub


Voici le code qui prend les captures...
Private Sub btnCapture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCapture.Click


Dim oDateHeure As String = Date.Now.Day.ToString & "-" & Date.Now.Month.ToString & "-" & Date.Now.Year.ToString & " " & Date.Now.Hour.ToString & "h" & Date.Now.Minute.ToString & "m" & Date.Now.Second.ToString & "s"

If ValidateOK = True Then
AxltmmCaptureCtrl1.CapturePicture.Save("D:\Patients Directories\Images" & oDateHeure & format)

LoadImage()
Else
MsgBox("Erreur, Vous n'avez pas valide de configuration")
End If
End Sub


Merci de me donner un coup de main. J'ai essaye plusieurs solutions mais sans succes. Je n'arrive pas a savoir ou le fichier est utilise.


n'hesitez pas de me poser une question si mon post n'est pas complet...

Chiche69
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
bitangm 13 Messages postés jeudi 20 août 2009Date d'inscription 24 août 2010 Dernière intervention - 12 août 2009 à 12:36
3
Merci
Le problème vient du fait que le fichier est encore
vérouillé par un autre processus, il faut attendre sa
libération, la fonction ci-dessus résoudra ton problème


Public Function SuppressionFichier(ByVal LeChemin As String, ByVal ForcerLaSuppression As Boolean, Optional ByVal NombreDeTentatives As Integer = 1) As Boolean
If ForcerLaSuppression Then
'Le nombre de tentatives de suppression du fichier est illimité
NombreDeTentatives = Integer.MaxValue
ElseIf NombreDeTentatives < 1 Then
'Le nombr de tentatives doit être suppérieur ou égal à 1
NombreDeTentatives = 1
End If

For i As Integer = 1 To NombreDeTentatives
Try
'Tentative de suppression du fichier
System.IO.File.Delete(LeChemin)
'L'opération à été effectuée, on quitte la boucle
Exit For
Catch ex As Exception
'Erreur de suppression, on actualise l'affichage pour ne pas vérouiller le processeur
System.Windows.Forms.Application.DoEvents()
End Try
Next

'Renvoi True si le fichier n'existe plus
'Renvoi False si le fichier existe toujours
Return Not System.IO.File.Exists(LeChemin)
End Function



BITANG Marcel Yves
bitangm@yahoo.fr
+237 75 17 16 81
+237 75 68 58 22
+237 96 04 18 51

Merci bitangm 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de bitangm
Chiche69 34 Messages postés mercredi 24 juin 2009Date d'inscription 25 septembre 2010 Dernière intervention - 12 août 2009 à 13:11
0
Merci
Merci bitangm !

La fonction marche parfaitement!
Commenter la réponse de Chiche69
msb2006 5 Messages postés dimanche 21 mai 2006Date d'inscription 27 décembre 2009 Dernière intervention - 27 déc. 2009 à 02:57
0
Merci





Commenter la réponse de msb2006

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.