Chiche69
Messages postés34Date d'inscriptionmercredi 24 juin 2009StatutMembreDernière intervention25 septembre 2010
-
12 août 2009 à 10:38
msb2006
Messages postés5Date d'inscriptiondimanche 21 mai 2006StatutMembreDernière intervention27 décembre 2009
-
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
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
bitangm
Messages postés13Date d'inscriptionjeudi 20 août 2009StatutMembreDernière intervention24 août 2010 12 août 2009 à 12:36
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