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