2010-07-27 8 views
1

Comment puis-je écrire une méthode invoke avec deux paramètres de différents types de variables?Appel avec deux paramètres de différents types de variables?

public void InsertStockPrice(double Value, string Company) 
    { 
     if (InvokeRequired) 
     { 
      Invoke(new Action<double>(InsertStockPrice), Value); // <- Not sure what to do here 
     } 
     else 
     { 
      //Do stuff 
     } 
    } 

Répondre

4

Je suspect c'est ce que Jimmy voulait dire (comme Control.Invoke ne sais pas vraiment quoi faire avec un Action<double, string> :

public void InsertStockPrice(double value, string company) 
{ 
    if (InvokeRequired) 
    { 
     MethodInvoker invoker =() => InsertStockPrice(value, company); 
     Invoke(invoker); 
    } 
    else 
    { 
     // Do stuff 
    } 
} 

Si vous utilisez C# 2:

public void InsertStockPrice(double value, string company) 
{ 
    if (InvokeRequired) 
    { 
     MethodInvoker invoker = delegate { InsertStockPrice(value, company); } 
     Invoke(invoker); 
    } 
    else 
    { 
     // Do stuff 
    } 
} 

Notez que j'ai modifié la casse de vos paramètres pour l'adapter aux conventions .NET normales.

0

Je pense que vous voulez dire être à la recherche est:

Action<Type1,Type2> yourAction = (type1Var, type2Var) => 
    { 
     do stuff with type1Var and type2Var; 
    } 

yourAction(var1, var2); 
0

Si ce modèle est souvent répété dans le code, vous pouvez faire méthode peu d'aide comme celui-ci

static class UiExtensions 
{ 
    public static void SafeInvoke(this Control control, MethodInvoker method) 
    { 
     if (control.InvokeRequired) 
      control.Invoke(method); 
     else 
      method(); 
    } 
} 

this.SafeInvoke(() => { InsertStockPrices(value, company); }); 
Questions connexes