Attendez qu'un thread se termine en C#

Muhammad Maisam Abbas 16 février 2024
  1. Attendez qu’un thread se termine avec la méthode Task.WaitAll() en C#
  2. Attendez qu’un thread se termine avec la méthode Thread.Join() en C#
Attendez qu'un thread se termine en C#

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#.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Csharp Thread