Récupérer les contrôles d'un autre Thread [Résolu]

Signaler
Messages postés
30
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
17 septembre 2009
-
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
-
Bonjour,

Comment puis-je récupérer un contrôle créer dans un autre Thread?

Exemple:
Private  _list As
New List(Of Control_Viewer.ControlViewer)

Private

Sub
ChargeComponentViewer(ByVal Sender AsObject)
   Dim source AsString = CType(Sender, String)
   Dim CV AsNew Control_Viewer.ControlViewer

   If
System.IO.File.Exists(Source)
Then

      CV.path_file = Source
      CV.LoadFile()
      Me._list_component_viewer.Add(CV)
   EndIf

EndSub
Mon problème est ici, il est impossible d'ajouter les contrôles (CTL) dans le panel (panComponentViewer):
Private

Sub timTaskAsync_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timTaskAsync.Tick

'Si la tâche n'est pas en cours
   If
Not
Me.thExecuteTaskAsync.IsAlive
Then
      ForEach ctl As Control_Viewer.ControlViewer InMe._list_component_viewer

         Me.panComponentViewer.Controls.Add(ctl)
      Next
   End If
End Sub

Merci d'avance,

Pascal

4 réponses

Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
Bonjour,

Utilises plutot la méthode Invoke de la form par exemple :

Form1.Invoke(MonDelegate,Mes params())

http://nhen0039.chez-alice.fr/index.php
Messages postés
30
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
17 septembre 2009

Pour préciser: la routine ChargeComponentViewer se fait à l'aide d'un delegate.
Messages postés
30
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
17 septembre 2009

Merci, ça fonctionne.

Par contre, ma fonction charge un fichier dans mon composant et le nombre de composants est variable, ça peut aller jusqu'à 10-12.

L'application semble attendre que tous les chargements soient complétés avant de donner le contrôle à l'utilisateur.

Y a-t'il une façon de corriger cela?
Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
Bonjour,

Normal, car la création se fait dans le thread de l'interface, donc tant que tu charge les controles, tu n'a pas la main sur l'interface.

http://nhen0039.chez-alice.fr/index.php