Créons maintenant un fil de discussion. Lorsque vous utilisez la classe Thread pour créer un fil de discussion, il vous suffit de fournir l'entrée du fil de discussion. L'entrée de thread permet au programme de savoir quoi laisser ce thread faire. En C#, l'entrée de thread est fournie via le délégué ThreadStart. Vous pouvez comprendre ThreadStart comme un pointeur de fonction, pointant vers la fonction à exécuter par le thread. Thread. Après la méthode Start(), le thread commence à exécuter la fonction représentée ou pointée par ThreadStart.
Ouvrez votre VS.net et créez une nouvelle application console (Application console). Les codes suivants vous permettront de découvrir le plaisir sans fin de contrôler entièrement un fil !
//ThreadTest.cs
using System;
using System.Threading;
namespace ThreadTest
{
public class Alpha
{
public void Beta()
{ Line("Alpha.Beta s'exécute dans son propre thread. "
}
})
};
Classe publique simple
{
{
Console.WriteLine("Thread Start/Stop/Join Sample");
Alpha oAlpha = new Alpha();
//Créez un thread ici pour exécuter la méthode Beta() de la classe Alpha
oThread.Start();
while (!oThread.IsAlive);
oThread.Abort(); ;
Console.WriteLine("Alpha.Beta est terminé"); try
{
Console.WriteLine("Essayez de redémarrer le fil Alpha.Beta"); 🎜>Console.Write( "ThreadStateException essayant de redémarrer Alpha.Beta. ");
Console.WriteLine("Attendu car les threads interrompus ne peuvent pas être redémarrés."); 0 ;
}
}
}
Ce programme contient deux classes, Alpha et Simple Lors de la création du thread oThread, nous avons initialisé l'agent ThreadStart en pointant sur Alpha.Beta. () objet (délégué), lorsque le thread oThread que nous avons créé appelle la méthode oThread.Start() pour démarrer, le programme exécute en fait la méthode Alpha.Beta() :
Alpha oAlpha = new Alpha();
Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));
oThread.Start();
Puis dans la boucle while de la fonction Main() , nous utilisons la méthode statique Thread.Sleep() arrête le thread principal pendant 1 ms, pendant lequel le CPU se tourne vers le thread d'exécution oThread. Ensuite, nous essayons d'utiliser la méthode Thread.Abort() pour terminer le thread oThread. Faites attention à ce qui suit : oThread.Join() La méthode Thread.Join() fait attendre le thread principal jusqu'à la fin du thread oThread. Vous pouvez spécifier un paramètre int comme temps d'attente maximum pour la méthode Thread.Join(). Après cela, nous avons essayé d'utiliser la méthode Thread.Start() pour redémarrer le thread oThread, mais évidemment la conséquence de la méthode Abort() était de terminer le thread de manière irréversible, donc à la fin le programme lancera une ThreadStateException
Ce qui précède est C# Une étude préliminaire sur le mécanisme multi-threading (2). Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !