11
votes

Problème Création d'un fil paramétré

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


0 commentaires

6 Réponses :


17
votes

Frustre, le type paramétrastarstartstartsart La signature accepte un paramètre objet .

Vous devez faire quelque chose comme ça, fondamentalement: xxx


0 commentaires

3
votes

méthode bar doit accepter le paramètre objet . Vous devriez lancer vers int à l'intérieur. J'utiliserais des lambdas ici pour éviter de créer une méthode inutile: xxx


0 commentaires

7
votes

Ceci est ce que paramétrasedThreadStartStart ressemble à: xxx

Voici votre méthode: xxx

faire Ce travail, modifie votre méthode sur: xxx


0 commentaires

3
votes

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
}


0 commentaires

1
votes

bar doit prendre un "code> objet dans le paramètre, pas un int xxx


0 commentaires

3
votes

Vous devez modifier la barre vers

private static void Bar(object ox)
{
   int x = (int)ox;
   ...
}


0 commentaires