J'ai des problèmes d'essayer de créer un thread avec un paramètreTheadStart. Voici le code que j'ai maintenant:
public class MyClass { public static void Foo(int x) { ParameterizedThreadStart p = new ParameterizedThreadStart(Bar); // no overload for Bar matches delegate ParameterizedThreadStart Thread myThread = new Thread(p); myThread.Start(x); } private static void Bar(int x) { // do work } }
6 Réponses :
Frustre, le type code> paramétrastarstartstartsart code> La signature accepte un paramètre Vous devez faire quelque chose comme ça, fondamentalement: P> objet code>.
méthode bar code> doit accepter le paramètre code> objet code>. Vous devriez lancer vers
int code> à l'intérieur. J'utiliserais des lambdas ici pour éviter de créer une méthode inutile:
Ceci est ce que Voici votre méthode: p> faire Ce travail, modifie votre méthode sur: p> paramétrasedThreadStartStart code> ressemble à:
On s'attend à un argument d'objet afin que vous puissiez passer une variable, puis vous devez le jeter au type souhaité:
private static void Bar(object o) { int x = (int)o; // do work }
bar code> doit prendre un "code> objet code> dans le paramètre, pas un
int code>
Vous devez modifier la barre vers
private static void Bar(object ox) { int x = (int)ox; ... }