Option Strict On Public Class Form1 'délégué pour éviter les opérations inter-thread (actualisation liste) Private Delegate Sub DelegateThreadSafe(ByVal Fichier As IO.FileInfo) 'classe devant être passée au thread par sa méthode Start Public Class clsObjet Public Dossier As IO.DirectoryInfo Public Extensions As String() Sub New(ByVal pDossier As IO.DirectoryInfo, ByVal pExt As String()) Dossier = pDossier Extensions = pExt End Sub End Class Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'déclaration d'un thread devant exécuter la sub ChercheFichiers Dim P As New Threading.Thread(AddressOf ChercheFichiers) 'Start attend un paramètre objet (on va donc lui fournir une instance de la classe clsObjet) P.Start(New clsObjet(New IO.DirectoryInfo("c:"), New String() {"gif", "jpg", "bmp"})) End Sub Private Sub ChercheFichiers(ByVal Parametre As Object) Try 'ici je dois caster mon paramètre dans le bon type Dim MonObjet As clsObjet = DirectCast(Parametre, clsObjet) 'pour chaque extension... For Each ext As String In MonObjet.Extensions '...on fait une liste des fichiers concernés... Dim f() As IO.FileInfo = MonObjet.Dossier.GetFiles("*." & ext) '...et on ajoute les fichiers à la listbox For Each Fichier As IO.FileInfo In f Me.Invoke(New DelegateThreadSafe(AddressOf RempliListe), Fichier) Next Next 'recherche des sous-dossiers... For Each d As IO.DirectoryInfo In MonObjet.Dossier.GetDirectories 'et recherche récursive des fichiers ChercheFichiers(New clsObjet(d, MonObjet.Extensions)) Next Catch ex As Exception End Try End Sub Private Sub RempliListe(ByVal Fichier As IO.FileInfo) ListBoxFichiersTrouvés.Items.Add(Fichier.FullName) ListBoxFichiersTrouvés.SelectedIndex = ListBoxFichiersTrouvés.Items.Count - 1 ListBoxFichiersTrouvés.Refresh() End Sub End Class
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'énumération de tous les lecteurs For Each Drive As IO.DriveInfo In IO.DriveInfo.GetDrives 'si le lecteur est prêt... If Drive.IsReady Then '...déclaration d'un thread devant exécuter la sub ChercheFichiers Dim P As New Threading.Thread(AddressOf ChercheFichiers) 'Start attend un paramètre objet (on va donc lui fournir une instance de la classe clsObjet) P.Start(New clsObjet(New IO.DirectoryInfo(Drive.RootDirectory.FullName), New String() {"gif", "jpg", "bmp"})) End If Next End Sub
Private Sub BouttonListerFichiers_Click(sender As Object, e As EventArgs) Handles BouttonListerFichiers.Click, BouttonListerFichiers.Click
P.Start(New clsObjet(New IO.DirectoryInfo("c:"), New String() {"gif", "jpg", "bmp"}))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic Class Form1 'délégué pour éviter les opérations inter-thread (actualisation liste) Private Delegate Sub DelegateThreadSafe(ByVal Fichier As IO.FileInfo) 'classe devant être passée au thread par sa méthode Start Public Class clsObjet Public Dossier As IO.DirectoryInfo Public Extensions As String() Sub New(ByVal pDossier As IO.DirectoryInfo, ByVal pExt As String()) Dossier = pDossier Extensions = pExt End Sub End Class Private Sub ChercherFichiers(ByVal Parametre As Object) Try 'ici je dois caster mon paramètre dans le bon type Dim MonObjet As clsObjet = DirectCast(Parametre, clsObjet) 'pour chaque extension... For Each ext As String In MonObjet.Extensions '...on fait une liste des fichiers concernés... Dim f() As IO.FileInfo = MonObjet.Dossier.GetFiles("*." & ext) '...et on ajoute les fichiers à la listbox For Each Fichier As IO.FileInfo In f Me.Invoke(New DelegateThreadSafe(AddressOf RemplirListe), Fichier) Next Next 'recherche des sous-dossiers... For Each d As IO.DirectoryInfo In MonObjet.Dossier.GetDirectories 'et recherche récursive des fichiers ChercherFichiers(New clsObjet(d, MonObjet.Extensions)) Next Catch ex As Exception End Try End Sub Private Sub RemplirListe(ByVal Fichier As IO.FileInfo) ListboxFichiersTrouvés.Items.Add(Fichier.FullName) ListboxFichiersTrouvés.SelectedIndex = ListboxFichiersTrouvés.Items.Count - 1 ListboxFichiersTrouvés.Refresh() LabelNombreFichiersTrouvés.Text = "Nombre De Fichiers Trouvés : " & ListboxFichiersTrouvés.Items.Count End Sub Private Sub RécupérerFichiersImages() 'énumération de tous les lecteurs For Each Drive As IO.DriveInfo In IO.DriveInfo.GetDrives 'si le lecteur est prêt... If Drive.IsReady Then Dim P As New Threading.Thread(AddressOf ChercherFichiers) 'Start attend un paramètre objet (on va donc lui fournir une instance de la classe clsObjet) P.Start(New clsObjet(New IO.DirectoryInfo(Drive.RootDirectory.FullName), New String() {"JPG", "GIF", "BMP", "DXF", "EPS", "PCX", "PICT", "PS", "TIFF", "WPG", "PNG", "MNG"})) End If Next End Sub Private Sub BouttonListerFichiers_Click(sender As Object, e As EventArgs) Handles BouttonListerFichiers.Click, BouttonListerFichiers.Click If CheckBoxImages.Checked = True Then Call RécupérerFichiersImages() End If If CheckBoxVidéos.Checked = True Then Call RécupérerFichiersVidéos() End If If CheckBoxDocuments.Checked = True Then Call RécupérerFichiersDocuments() End If If CheckBoxAudio.Checked = True Then Call RécupérerFichiersAudio() End If End Sub
If CheckBoxImages.Checked = True ThenOr CheckBoxImages.Checked est un booléen ce qui veut dire que tu as écris :
Si vrai = vrai alors
Si vrai alors
If CheckBoxImages.Checked Then
If Not CheckBoxImages.Checked Then