Récupérer l'élément selectionné dans un controle d'un autre thread

invivus Messages postés 5 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 7 janvier 2014 - 15 mai 2008 à 05:26
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 15 mai 2008 à 15:16
Bonjour, bonjour !

Tout est dans le titre si je puis dire ^^ pour être plus précis j'ai un thread qui attend des infos d'un serveur et qui lui en envoi par moment et j'aimerai lui envoyé l'element selectionné dans un combobox qui lui est dans le thread de la form1...(celle lancé au démarrage)

je pensais pouvoir faire comme pour modifier des parametres avec un delegate :
Private

Delegate
Sub SyncDelegate()

Private
Sub change_desttrue_thread()

Dim del
As SyncDelegate =
New SyncDelegate(
AddressOf change_desttrue_Sync)ComboBox2.BeginInvoke(del)

End
Sub

Private
Sub change_desttrue_Sync()ComboBox2.Enabled =

True

End
Sub

Etdans mon thread secondaire je fais à ma méthode change_desttrue_thread()

Ce morceau de code marche parfaitement, par contre je n'arrive pas l'adapter pour récupérer un élement selectionné dans ce combobox snif... j'ai essayé la chose suivante :

Private

Delegate
Function SyncDelega()
As
String
Private

Function get_dest_thread() AsString

Dimdel
As SyncDelega =
NewSyncDelega(
AddressOfget_dest_Sync)

ReturnComboBox2.BeginInvoke(del)

End
Function

Private
Functionget_dest_Sync()
As
String

ReturnComboBox2.SelectedItem.ToString()

End
Function

et je fais appel a ma fonctionget_dest_thread()

mais j'ai une exceptionde type invalidCastException. Si vous pouviez m'aidez ou me donner une façon plus simple je vous en serai reconnaissant ^^ Merci d'avance

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
15 mai 2008 à 13:57
Bonjour

Sur quelle ligne l'erreur ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
invivus Messages postés 5 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 7 janvier 2014
15 mai 2008 à 15:09
Aucune idée précisement ^^ sur le PDA il m'affiche le contenu de l'erreur car je met mon appel a la fonction get_dest_thread() dans un try^^


J'enregistre le résultat de cet apel dans un string et ça plante^^


 


Pour le moment j'ai résolu le probleme en mettant une variable global qui contient l'element selectionné par le combobox mais c'est vraiment pas propre :(
0
invivus Messages postés 5 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 7 janvier 2014
15 mai 2008 à 15:09
PS : Merci de te pencher sur mon cas ^^
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
15 mai 2008 à 15:16
Bonjour

Dans l'exception (du Catch), tu affiche de .ToString et normalement, tu drvrait tout voir.
Sinon, tu ne peux pas lancer le débuggeur sur ton PC et lancer le test sur le PPC ? Il mpe semble que c'est possible cela.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Rejoignez-nous