Problème lors du scannage des dossiers d'un disque dur

Résolu
cs_fauve
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
- 4 mars 2007 à 23:13
cs_fauve
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
- 6 mars 2007 à 09:57
Salut,

Voilà, je veux que mon programme scanne tous les dossiers du disque dur pour cela j'ai affiché 3 label un pour dire que la recherche de dossier est en cours, un deuxième pour afficher en temps réel le chemin du dossier trouvé et un 3° pour afficher le nombre de dossiers scannés et un bouton pour lancer la recherche

J'arrive donc à mon problème, c'est que lors du scan des dossiers. A un moment donné, mes labels ne sont plus actualisés et une grande zone blanche apparait sur ma form. Ceci se produit de manière aléatoire(je pense) parfois pendant Document And Settings, parfois Program Files, ... En revanche, il scanne les dossiers assez vite peut être que le problème vient de là.

Je vous laisse le lien pour télécharger mon code pour tester et voir si ca le pour vous aussi

Cliquez ici pour télécharger mon code

Merci et @+

3 réponses

cs_Willi
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
4 mars 2007 à 23:35
Bonsoir,
Sépare ton traitement de l'affichage.
Pour cela met dans un thread ta fonction Recherche_Dossiers.



J'ai repris ton code et l'ai modifié. voir ci-dessous



8<-------------------------------------------------------



Imports



System.IO


Public






Class
Form1


Dim
liste_dossiers(0)

As



String






Dim
nb

As



Integer
= 0


Private



Delegate



Sub
DelDisplayInfos(

ByVal
folder

As



String
,

ByVal
nb

As



String
)


Private



Sub
Button1_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Button1.ClickLabel1.Text =


"Recherche des dossiers en cours..."

Label1.Update()







Dim
th

As



New
Threading.Thread(

AddressOf
ProcRecherche)th.Start(


New



Object
() {

"C:/"
, 0})


End



Sub






Private



Sub
ProcRecherche(

ByVal
value

As



Object
)


Dim
obj

As



Object
() = value


Dim
sFolder

As



String
= obj(0).ToString()


Dim
iVal

As



Integer
= obj(1)Recherche_Dossiers(sFolder, iVal)


End



Sub






Public



Sub
Recherche_Dossiers(

ByVal
folder

As



String
,

ByVal
indent

As
Int32)


Dim
subdirs

As



String
() = Directory.GetDirectories(folder)


Dim
del

As



New
DelDisplayInfos(

AddressOf
ProcDisplay)


If
subdirs.Length <> 0

Then






For



Each
s

As



String



In
subdirsnb = nb + 1


Me
.Invoke(del, s, nb.ToString)


'Utiliser la récursivité avec une indentation

Recherche_Dossiers(s, indent + 3)







Next






End



If






End



Sub






Private



Sub
ProcDisplay(

ByVal
folder

As



String
,

ByVal
nb

As



String
)Label2.Text = folder

Label3.Text = nb


End



SubEnd





Class
3
cs_fauve
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
4 mars 2007 à 23:15
Salut

Faire un clic droit sur le lien puis enregistrer la cible sous (ca n'a pas l'ai de fonctionner en cliquant directement dessus)
0
cs_fauve
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
6 mars 2007 à 09:57
merci
0