Invoke sur string() [Résolu]

Signaler
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
-
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
-
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

Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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"}
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Salut Megafan
si c'est un problème de délégué il faut voir avec le syndicat

bonjour chez vous!
< body>
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
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
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
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