Bonsoir à tous,
J'aimerais améliorer la vitesse d’exécution de mon code mais je ne sais pas comment faire. Celui-ci lit environ 60000 dossiers et 600 fichiers,
les noms de dossiers sont stockés dans 2 listes 'CarSetupsListe' et 'TracksSetupListe', les fichiers sont stockés dans 'Setups'.
Ça prends environ 10s sur mon PC portable et bien que s’exécutant en tache de fond, cela ne rends pas l'interface disponible tout de suite pour cette partie du programme.

Les dossiers à lire sont organisés de cette façon :
Car1/Track1/xxxxxx.ini
Car1/Track2/xxxxxx.ini
....
Car2/Track1/xxxxxx.ini
Car2/Track2/xxxxxx.ini
....


J’espère que vous pourrez m'aider car je ne vois vraiment pas comment faire....

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 Private Sub LoadDataSetups()
        Setups.Clear()
        CarsSetupsListe.Clear()
        TracksSetupsListe.Clear()
        ' Chargement de la liste des Voitures et Circuits dans les listes :
        Dim countCarFolder As Integer
        Dim TotaleSetupsFolder As Integer = Directory.GetDirectories(Options.AC_Doc_Directory & "\setups").Length
        For Each CarFolder As String In Directory.GetDirectories(Options.AC_Doc_Directory & "\setups")
            countCarFolder += 1
            Dim CarName As String = Path.GetFileName(CarFolder)
            If Not CarsSetupsListe.Contains(CarName) Then
                CarsSetupsListe.Add(CarName)
            End If
 
            For Each TrackFolder As String In Directory.GetDirectories(CarFolder)
                Dim TrackName As String = Path.GetFileName(TrackFolder)
                If Not TracksSetupsListe.Contains(TrackName) Then
                    TracksSetupsListe.Add(TrackName)
                End If
 
                For Each FileSetup As String In Directory.GetFiles(TrackFolder)
                    Dim Fi As New FileInfo(FileSetup)
                    If Fi.Extension.ToLower = ".ini" Then
                        Setups.Add(FileSetup, New Setup(FileSetup, CarName, TrackName))
                    End If
                Next
            Next
            Dim Progress As Integer = CInt(100 * countCarFolder / TotaleSetupsFolder)
            bgwLoadSetups.ReportProgress(Progress, String.Format("Chargement des Setups ({0}%)", Progress))
        Next
        CarsSetupsListe.Sort()
        TracksSetupsListe.Sort()
    End Sub