Invoke sur string()

Résolu
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 - 7 août 2008 à 15:53
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 - 8 août 2008 à 09:08
Bonjour,

J'ai besoin d'aide de la part des experts en .NET

le point de départ:
- Une Form avec une listbox (LstClients)
- Une Classe Serveur
->  Envoie un evenement lors de la connexion/deconnexion client (UpdateClients)
->  Une fonction GetClients qui renvoi un tableau de chaine avec les clients connectés.

code de ma form

' declaration du délégué
private delegate sub DelegateAfficheClients(byval TabClients() as string

' La vraie fonction d'affichage
private sub AfficheClients(byval TabCleints() as string)
lstClients.items.clear
....
end sub

' l'evenement déclenché par la classe serveur
Private sub Serveur_UpdateClients() Handles Serveur.UpdateClients
'ici je récupere mon Tableau de clients
Dim TabClients() as string=Serveur.GetClients()
' a ce niveau tout est bon mon tableau est correct

' maintenant j'invoke le delégué
me.invoke(new delegate DelegateAfficheClients(Addressof AfficheClients),TabClients)

et la des qu'un client se connecte...
***
Une exception de première chance de type 'System.Reflection.TargetParameterCountException' s'est produite dans System.Windows.Forms.dll
Nombre de paramètres incorrects.
****

Si je passe une string à la place du tableau de string (et que je modifie mon delegué bien sur), tout fonctionne bien
Quelqu'un à une idée ?

Merci d'avance.

Megafan
A voir également:

4 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
7 août 2008 à 19:11
Salut Megafan,

Déjà, tu as apparement fais des erreurs en nous tapant ton code :
me.invoke(new <strike>delegate</strike> DelegateAfficheClients(Addressof AfficheClients),TabClients)

Ensuite, l'argument ParamArray de la méthode Invoke doit être un tableau qui lui même contient tes arguments pour la délégué, et pas directement l'argument. C'est à dire que ton code devient :

Dim TabClients() as string=Serveur.GetClients()
Dim Args() As Object = {TabClients}
Me.Invoke(New DelegateAfficheClients(AddressOf AfficheClients), Args)

Chaque élément de Args est un argument de la délégué. Comme ta délégué n'a qu'un seul élément, ParamArray doit être un tableau avec 1 seul élément.
Ca fonctionne avec un String à la place du tableau, car "Salut" = {"Salut"}
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
7 août 2008 à 17:24
Salut Megafan
si c'est un problème de délégué il faut voir avec le syndicat

bonjour chez vous!
< body>
0
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
7 août 2008 à 17:50
Salut Gillardg,

- merci pour ta réponse, je les contacte dès ce soir et s'il y a pas de négociation : GREVE !

mais serieusement, personne n'a une idée ?
j'ai réglé ça à l'arrache mais c'est pas propre.

@+
Megafan
0
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
8 août 2008 à 09:08
Bonjour,

Ben voila quand on demande un expert, parfois on en trouve 1..............
(2 avec gillardg mais j'ai toujours pas de nouvelles du syndicat )

Kevin.Ory, que dire.... à part merci.

@+
Megafan
0
Rejoignez-nous