Warten auf das Ende eines Threads in C#
-
Warten Sie, bis ein Thread mit der Methode
Task.WaitAll()
in C# beendet ist -
Warten auf das Ende eines Threads mit der Methode
Thread.Join()
inC#
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.
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