Invoke sur string() [Résolu]

cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 7 août 2008 à 15:53 - Dernière réponse : cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention
- 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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 7 août 2008 à 19:11
3
Merci
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"}

Merci Kevin.Ory 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Kevin.Ory
gillardg 3288 Messages postés jeudi 3 avril 2008Date d'inscription 14 septembre 2014 Dernière intervention - 7 août 2008 à 17:24
0
Merci
Salut Megafan
si c'est un problème de délégué il faut voir avec le syndicat

bonjour chez vous!
< body>
Commenter la réponse de gillardg
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 7 août 2008 à 17:50
0
Merci
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
Commenter la réponse de cs_Megafan
cs_Megafan 390 Messages postés dimanche 7 avril 2002Date d'inscription 23 septembre 2016 Dernière intervention - 8 août 2008 à 09:08
0
Merci
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
Commenter la réponse de cs_Megafan

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.