Problème MutliThread VB.NET

Résolu
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007 - 16 août 2005 à 06:11
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007 - 16 août 2005 à 22:36
VB.NET



Salut, voilà je cherche à modifier une source de blanc :

http://www.vbfrance.com/code.aspx?ID=18225



Cette source liste tous les répertoires d'un PC.



Et en fait le problème c'est que je voudrais que la recherche des
répertoires se fassent dans une autre thread, mais j'obtient une
erreur, qui me dit qu'il faut utiliser Control.Invoke ?!?



Ci-dessous le bout de code modifié :



Sub aaa()



Dim drives As String() = IO.Directory.GetLogicalDrives 'créé une variable

'texte (string) qui contient
tout les diques locals (disque dur, lecteur de CD/disquette)...

Dim drive As String 'créé une variable pour la suite

Dim no As TreeNode 'définit no comme une branche de l'arbre



For Each drive In drives 'Ceci créé une boucle qui va bonner toutes les valeur de la

'variable (tableau) drives à la variable drive

no = New TreeNode 'créé une nouvel branche


no.ImageIndex = 0 'donne l'icône d'un disque dur qui est situé dans un
Imagelist


no.SelectedImageIndex = 0 'donne l'icône d'un disque dur pour que
losqu'on sélectionne

'le disque dur, cela mette toujours l'icône d'un disque dur.


no.Text = drive.Remove(Len(drive) - 1, 1) 'donne le texte de la
branche, qui est

'le nom d'un des disque locale.

TreeView1.Nodes.Add(no) 'ajoute cette branche à l'arbre

Try 'essaie:


Dossier(drive, no) 'd'éxecuter cette événement

Catch

End Try

Next



End Sub



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Button3.Enabled =
ShowNewFolderButton 'ceci va définir si l'utilisateur va pouvoir
créer un

'nouveau dossier ou pas...

If Description <> ""
Then 'Ceci va introduire le texte que vous aurez définit avant

'd'afficher cette form...

Label1.Text = Description

End If



TreeView1.Nodes.Clear() 'coupe toutes les branches de l'arbre (treeview)



Dim newthread As New Threading.Thread(AddressOf aaa)

newthread.Start()



End Sub


<hr>

http://www.pym-corp.com/

2 réponses

Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007
16 août 2005 à 16:36
La ligne est la 16 ème :

TreeView1.Nodes.Add(no) 'ajoute cette branche à l'arbre



Le message d'erreur est :

Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.windows.forms.dll



Informations supplémentaires : The action being performed on this
control is being called from the wrong thread. You must marshal to the
correct thread using Control.Invoke or Control.BeginInvoke to perform
this action.

<hr>

http://www.pym-corp.com/
0
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007
16 août 2005 à 22:36
Cool merci bien

J'avais trouvé une solution en C# que j'essayais de porter, mais j'avais un problème.



Merci beaucoup pour ton aide


<hr>

http://www.pym-corp.com/
0
Rejoignez-nous