2011-02-17 2 views
0

Je suis un exeption commeUn problème avec Invoke nombre de paramètres (méthode délégué, Object [] args)

System.Reflection.TargetParameterCountException: décalage de comptage des paramètres. à System.Windows.Forms.Control.MarshaledInvoke (l'appelant de contrôle, méthode délégué, Object [] args, synchrones booléen) à System.Windows.Forms.Control.Invoke (méthode Delegate, Object [] args)

Mais System.Windows.Forms.Control contient uniquement Invoke (méthode Delegate, méthode params Object [] args) mais pas Invoke (méthode Delegate, Object [] args). Et je l'utilise comme

Invoke (nouveau SetXDelegate (SetX), valeur1, valeur2)

Est-ce la raison de mon problème et je dois utiliser

Invoke (nouveau SetXDelegate (SetX), nouvel objet [] {valeur1, valeur2})?

MISE À JOUR

S'il vous plaît recommander s'il préférable d'utiliser quelque chose comme

(délégué (MethodInvoker) { SetX (valeur1, valeur2);}) Invoke

pour éviter ce genre de problèmes.

Merci.

+1

À quoi ressemble SetXDelegate? –

+0

Si SetX est une méthode d'instance, alors le premier objet dans le tableau devrait être le 'ceci' pour l'appel, je pense. Si cela prend 2 paramètres, alors vous devriez passer 3 valeurs dans les args. –

Répondre

2

Oui, vous devriez. It takes an array of objects

Modifier

Le problème pourrait être que SetXDelegate ne prend pas deux paramètres.

+3

Oui, mais il les prend comme un tableau de paramètres, donc les deux appels doivent être équivalents. Je pense qu'il est beaucoup plus probable que le SetXDelegate ne prenne pas deux paramètres ... mais nous ne pouvons pas encore dire: ( –

+0

La documentation de MSDN montre clairement la signature avec "params" - et la question l'a mentionné aussi –

+1

[MSDN example] (http://msdn.microsoft.com/fr-fr/library/w5zay9db.aspx) montre les différentes façons de passer les arguments 'params' –

2

En fait, je pense qu'il se plaint que vous passez le mauvais nombre de paramètres pour SetX à utiliser. Quels paramètres prend SetX?

Questions connexes