HOWTO · Csharp
Attendez qu'un thread se termine en C#
Il existe deux méthodes principales pour attendre la fin des threads en C#, les fonctions Task.WaitAll() et Thread.Join().
Sur cette page
Ce didacticiel abordera les méthodes d’attente de l’achèvement d’un thread en C#.
Attendez qu’un thread se termine avec la méthode Task.WaitAll() en C#
La méthode Task.WaitAll() en C# permet d’attendre l’achèvement de tous les objets de la classe Task. La classe Task représente une tâche asynchrone en C#. On peut démarrer les threads avec la classe Task et attendre que les threads se terminent avec la méthode Task.WaitAll() en C#.
using System;
using System.Threading.Tasks;
namespace wait_for_thread {
class Program {
static void fun1() {
for (int i = 0; i < 2; i++) {
Console.WriteLine("Thread 1");
}
}
static void fun2() {
for (int i = 0; i < 2; i++) {
Console.WriteLine("Thread 2");
}
}
static void Main(string[] args) {
Task thread1 = Task.Factory.StartNew(() => fun1());
Task thread2 = Task.Factory.StartNew(() => fun2());
Task.WaitAll(thread1, thread2);
Console.WriteLine("The End");
}
}
}
Production:
Thread 1 Thread 1 Thread 2 Thread 2 The End
Dans le code ci-dessus, nous avons attendu l’achèvement des tâches thread1 et thread2 à l’intérieur du thread principal avec la méthode Task.WaitAll() en C#.
Attendez qu’un thread se termine avec la méthode Thread.Join() en C#
Dans la section ci-dessus, nous avons expliqué comment nous pourrions attendre un thread avec la méthode Task.WaitAll() en C#. On peut également atteindre le même objectif avec la méthode Thread.Join() en C#. La méthode Thread.Join() arrête l’exécution du thread appelant jusqu’à ce que le thread courant termine son exécution. L’exemple de code suivant nous montre comment attendre qu’un thread termine son exécution avec la méthode Thread.Join() en C#.
using System;
using System.Threading.Tasks;
namespace wait_for_thread {
class Program {
static void fun1() {
for (int i = 0; i < 2; i++) {
Console.WriteLine("Thread 1");
}
}
static void fun2() {
for (int i = 0; i < 2; i++) {
Console.WriteLine("Thread 2");
}
}
static void Main(string[] args) {
Thread thread1 = new Thread(new ThreadStart(fun1));
Thread thread2 = new Thread(new ThreadStart(fun2));
thread1.Start();
thread1.Join();
thread2.Start();
thread2.Join();
Console.WriteLine("The End");
}
}
}
Production:
Thread 1 Thread 1 Thread 2 Thread 2 The End
Dans le code ci-dessus, nous avons attendu que les threads thread1 et thread2 se terminent à l’intérieur du thread principal avec la méthode Thread.Join() en C#.