Aguarde a conclusão de um thread em C#
-
Aguarde a conclusão de um thread com o método
Task.WaitAll()
emC#
-
Aguarde a conclusão de um thread com o método
Thread.Join()
emC#
Este tutorial discutirá os métodos de espera pela conclusão de um thread em C#.
Aguarde a conclusão de um thread com o método Task.WaitAll()
em C#
O método Task.WaitAll()
em C# é usado para aguardar a conclusão de todos os objetos da classe Task
. A classe Task
representa uma tarefa assíncrona em C#. Podemos iniciar threads com a classe Task
e esperar que as threads terminem com o método Task.WaitAll()
em 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");
}
}
}
Resultado:
Thread 1 Thread 1 Thread 2 Thread 2 The End
No código acima, esperamos pela conclusão das tarefas thread1
e thread2
dentro do thread principal com o método Task.WaitAll()
em C#.
Aguarde a conclusão de um thread com o método Thread.Join()
em C#
Na seção acima, discutimos como poderíamos esperar por um thread com o método Task.WaitAll()
em C#. Também podemos atingir o mesmo objetivo com o método Thread.Join()
em C#. O método Thread.Join()
interrompe a execução do thread de chamada até que o thread atual conclua sua execução. O exemplo de código a seguir nos mostra como esperar que um thread conclua sua execução com o método Thread.Join()
em 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");
}
}
}
Resultado:
Thread 1 Thread 1 Thread 2 Thread 2 The End
No código acima, esperamos que os threads thread1
e thread2
terminassem dentro do thread principal com o método Thread.Join()
em 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