Warten auf das Ende eines Threads in C#

Muhammad Maisam Abbas 16 Februar 2024
  1. Warten Sie, bis ein Thread mit der Methode Task.WaitAll() in C# beendet ist
  2. Warten auf das Ende eines Threads mit der Methode Thread.Join() in C#
Warten auf das Ende eines Threads in C#

In diesem Tutorial werden die Methoden zum Warten auf den Abschluss eines Threads in C# erläutert.

Warten Sie, bis ein Thread mit der Methode Task.WaitAll() in C# beendet ist

Die Methode Task.WaitAll() in C# wird verwendet, um auf den Abschluss aller Objekte der Klasse Task zu warten. Die Klasse Task repräsentiert eine asynchrone Task in C#. Wir können Threads mit der Klasse Task starten und warten, bis die Threads mit der Methode Task.WaitAll() in C# beendet sind.

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");
    }
  }
}

Ausgabe:

Thread 1
Thread 1
Thread 2
Thread 2
The End

Im obigen Code haben wir mit der Methode Task.WaitAll() in C# auf den Abschluss der Aufgaben thread1 und thread2 im Hauptthread gewartet.

Warten auf das Ende eines Threads mit der Methode Thread.Join() in C#

Im obigen Abschnitt haben wir besprochen, wie wir mit der Methode Task.WaitAll() in C# auf einen Thread warten können. Das gleiche Ziel können wir auch mit der Methode Thread.Join() in C# erreichen. Die Methode Thread.Join() hält die Ausführung des aufrufenden Threads an, bis der aktuelle Thread seine Ausführung abgeschlossen hat. Das folgende Codebeispiel zeigt, wie Sie warten müssen, bis ein Thread seine Ausführung mit der Methode Thread.Join() in C# abgeschlossen hat.

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");
    }
  }
}

Ausgabe:

Thread 1
Thread 1
Thread 2
Thread 2
The End

Im obigen Code haben wir darauf gewartet, dass die Threads thread1 und thread2 mit der Methode Thread.Join() in C# im Hauptthread beendet werden.

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

Verwandter Artikel - Csharp Thread