Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 19083|Répondre: 0

[Source] ThreadStart et ParameterizedThreadStart sont différents

[Copié le lien]
Publié sur 14/11/2016 10:25:44 | | |
ThreadStart :

Le délégué ThreadStart est défini comme void ThreadStart(), ce qui signifie que la méthode exécutée ne peut pas avoir de paramètres.
FilThreadStart threadStart=nouveau FilDémarrer(Calculer) ;
Fil de fil = nouveau fil (filDémarrer) ;
Fil de fil. Start() ;
Vid public Calculer()
   {
double Diamètre = 0,5 ;
Console.Write (« L’aire du cercle de diamètre de {0} est {1}"Diamètre, Diamètre*Math.PI) ;
   }
       Ici, nous utilisons un délégué qui définit un type ThreadStart, qui définit la méthode que le thread doit exécuter : Calcule, dans lequel la circonférence d’un cercle de diamètre 0,5 est calculée, et en sortie. Cela constitue l’exemple le plus simple de multithreading, qui dans de nombreux cas est suffisant




ParameterThreadStartStart :
ParameterThreadStart est défini comme void ParameterizedThreadStart(object state), et la fonction de démarrage du thread définie via ce délégué peut accepter un paramètre d’entrée, par exemple :



ParameterizedThreadStart threadStart=nouveau ParameterizedThreadStart(Calculate)
Fil de discussion = nouveau fil de discussion () ;
Fil de fil. Départ (0,9) ;
public void Calculate(objet arg)
{
double Diamètre = double(arg) ;
Console.Write (« L’aire du cercle de diamètre de {0} est {1}"Diamètre, Diamètre*Math.PI) ;
}

La méthode Calculate a un paramètre de type objet, bien qu’il n’y ait qu’un seul paramètre, et c’est aussi un type d’objet, et il doit toujours être converti lors de son utilisation, mais heureusement, il peut y avoir des paramètres, et en combinant plusieurs paramètres en une classe, puis en passant l’instance de cette classe comme paramètre, vous pouvez obtenir un transfert de plusieurs paramètres. Comme quoi:





classe AddParams
{
    public int a, b ;

    public AddParams(int numb1, int numb2)
    {
      A = numb1 ;
      b = numb2 ;
    }
}
#endregion

Programme de la classe
{
    vide statique Main(string[] args)
    {
      Console.WriteLine(« ***** Ajouter avec des objets Thread ***** ») ;
      Console.WriteLine(« ID du thread dans Main() : {0} »,
        Fil de fil courant fil (Fil de fil en cours) ;

      AddParams ap = nouveaux AddParams(10, 10) ;
      Thread t = new Thread(new ParameterizedThreadStart(Add)) ;
      t.Start(ap) ;
      Console.ReadLine() ;
    }

    #region Méthode d’ajout
    static void Add(object data)
    {
      if (les données sont AddParams)
      {
        Console.WriteLine(« ID du thread dans Main() : {0} »,
          Fil de fil courant fil (Fil de fil en cours) ;

        AddParams ap = (AddParams)data ;
        Console.WriteLine(« {0} + {1} est {2} »,
          ap.a, ap.b, ap.a + ap.b) ;
      }
    }
    #endregion
}
}




Précédent:.net/c# Explorer les avatars utilisateurs, récupérer les avatars QQ
Prochain:.net/c# calcule l’âge de la voiture du conducteur
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com