Attendi la fine di un thread in C#
-
Attendi la fine di un thread con il metodo
Task.WaitAll()
inC#
-
Attendi la fine di un thread con il metodo
Thread.Join()
inC#
Questo tutorial discuterà i metodi di attesa del completamento di un thread in C#.
Attendi la fine di un thread con il metodo Task.WaitAll()
in C#
Il metodo Task.WaitAll()
in C# viene utilizzato per attendere il completamento di tutti gli oggetti della classe Task
. La classe Task
rappresenta un’attività asincrona in C#. Possiamo avviare i thread con la classe Task
e attendere che i thread finiscano con il metodo Task.WaitAll()
in 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");
}
}
}
Produzione:
Thread 1 Thread 1 Thread 2 Thread 2 The End
Nel codice sopra, abbiamo aspettato il completamento delle attività thread1
e thread2
all’interno del thread principale con il metodo Task.WaitAll()
in C#.
Attendi la fine di un thread con il metodo Thread.Join()
in C#
Nella sezione precedente, abbiamo discusso di come possiamo aspettare un thread con il metodo Task.WaitAll()
in C#. Possiamo anche raggiungere lo stesso obiettivo con il metodo Thread.Join()
in C#. Il Thread.Join()
metodo interrompe l’esecuzione del thread chiamante fino a quando il thread corrente non completa la sua esecuzione. Il seguente esempio di codice ci mostra come aspettare che un thread completi la sua esecuzione con il metodo Thread.Join()
in 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");
}
}
}
Produzione:
Thread 1 Thread 1 Thread 2 Thread 2 The End
Nel codice precedente, abbiamo aspettato che i thread thread1
e thread2
finissero all’interno del thread principale con il metodo Thread.Join()
in C#.
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