Aidez moi à comprendre la procedure suivante svp

Résolu
cs_VTwin Messages postés 13 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 28 décembre 2006 - 20 août 2006 à 17:55
cs_VTwin Messages postés 13 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 28 décembre 2006 - 21 août 2006 à 01:25
Salut tout le monde,

Voila j'ai recupéré la procedure suivante que j'ai adapté à ma sauce. elle permet de lister tout les fichiers avec l'extension souhaitée dans un repertoire et ses sous repertoires. C'est une procedure recursive.
Pour qu'elle fonctionne, je suis obligé de l'ouvrir dans un nouveau thread, sinon elle ne marche comme il faut. En effet, si je n'ouvre pas de nouveau thead, tout les fichiers ne sont pas trouvés!

Quelq'un peut m'aider à comprendre pourquoi j'ai besoin de faire tourner cette procedure dans un nouveau thread?

Voici le code :

'dans un form :
--------------------------------------------------------------------------
        Dim ThreadSearch As Threading.Thread

        ThreadSearch = New Threading.Thread(AddressOf RunSearch)
        ThreadSearch.Start()
        RunSearch()
----------------------------------------------------------------------------------
    Private Sub RunSearch()

        SearchFile(XG_DriverPath, "*.inf")

    End Sub

-------------------------------------------------------------------------------------
'dans un module :

Public Sub SearchFile(ByVal X_Path As String, X_FileType as String)

'considerons que X_Path est le repertoire racine ou chercher les fichiers
'considerons que X_FileType est le type de fichier recherché (ex : ".inf")
'dès que je touve un fichier, je met son chemin complet dans un tableau XG_TabFiles

        Dim f As Integer

        f = 0

        For Each PathFile As String In IO.Directory.GetFiles(X_Path)
            If InStr(PathFile, X_FileType) Then
                XG_PathFile = PathFile

                XG_TabFiles(XG_TabFiles.Length - 1) = PathFile

                f = f + 1
                ReDim Preserve XG_TabFiles(XG_TabFiles.Length)
            End If
        Next

        For Each PathDirectory As String In IO.Directory.GetDirectories(X_Path)

            SearchFile(PathDirectory, ".inf")

        Next

    End Sub

Merci à vous ! 

2 réponses

cs_VTwin Messages postés 13 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 28 décembre 2006
21 août 2006 à 01:25
Merci pour ta reponse White_Mage()

Je te rassure XG_TabFiles est une variable globale que j'ai declaré au prealable et que j'ai oublié de copier-coller dans le post. Toutes mes variables sont declarées 

Pour le reste, merci de m'avoir ouvert les yeux, clair que le f ne sert à rien!!

Bon j'ai refait le test sans ouvrir de nouveau thread... et ca fonctionne aussi (sans rien toucher à cette fonction)
Je sais pas ce que j'ai bidouillé au debut des mes tests, j'avais du oublier quelque chose. d'ailleurs quand j'y repense je ne vois pas en quoi le fait d'ouvrir un nouveau thread peut influer sur le fonctionnement d'une procedure!!

En tout cas merci pour tes conseils et ma question initiale n'a en fait pas lieu d'etre... autant pour moi
3
white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010
20 août 2006 à 23:58
Il y a plusieurs "problèmes" dans ton code....
La gestion des tableaux est mauvaise...tu dois surement utiliser explicit = true....supprime tout de suite cela...et déclare tout. C'est surement la cause de tout tes problèmes...le compilateur t'expliquera tout.

Sinon, 

...
  f = f + 1 'Ecrit f += 1 (f ne te sert a rien dans ce code...mais utilise le a la place de "XG_TabFiles.Length - 1"
...

  ...     For Each PathDirectory As String In IO.Directory.GetDirectories(X_Path)

            SearchFile(PathDirectory, ".inf") ''''REM Je mettret plutôt X_FileType  que ".inf"

        Next
...

etc..etc...
A+
White_Mage();
0
Rejoignez-nous