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;
...
}