Espere a que termine un subproceso en C#
-
Espere a que termine un hilo con el método
Task.WaitAll()
enC#
-
Espere a que termine un hilo con el método
Thread.Join()
enC#
![Espere a que termine un subproceso en C#](/img/Csharp/feature-image---wait-for-thread-to-finish-in-csharp.webp)
Este tutorial discutirá los métodos para esperar la finalización de un hilo en C#.
Espere a que termine un hilo con el método Task.WaitAll()
en C#
El método Task.WaitAll()
en C# se utiliza para esperar la finalización de todos los objetos de la clase Task
. La clase Tarea
representa una tarea asincrónica en C#. Podemos iniciar subprocesos con la clase Task
y esperar a que los subprocesos terminen con el método 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");
}
}
}
Producción :
Thread 1
Thread 1
Thread 2
Thread 2
The End
En el código anterior, esperamos la finalización de las tareas thread1
y thread2
dentro del subproceso principal con el método Task.WaitAll()
en C#.
Espere a que termine un hilo con el método Thread.Join()
en C#
En la sección anterior, discutimos cómo podríamos esperar un hilo con el método Task.WaitAll()
en C#. También podemos lograr el mismo objetivo con el método Thread.Join()
en C#. El método Thread.Join()
detiene la ejecución del hilo de llamada hasta que el hilo actual completa su ejecución. El siguiente ejemplo de código nos muestra cómo esperar a que un hilo complete su ejecución con el método 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");
}
}
}
Producción :
Thread 1
Thread 1
Thread 2
Thread 2
The End
En el código anterior, esperamos que los subprocesos thread1
y thread2
terminaran dentro del subproceso principal con el método Thread.Join()
en 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