Wait for a Thread to Finish in C#
To wait for a thread to finish in C# we can use one of 2 ways:1) Using Task.WaitAll() method
2) Using Thread.Join() method
1) Using Task.WaitAll() method
This method waits for all of the provided Task objects to complete execution, this method requires including namespace:using System.Threading.Tasks;
Example
using System;
using System.Threading.Tasks;
public class Program
{
static void function1() {
for(int i = 0; i < 4; i++)
{
Console.WriteLine("Thread function 1");
}
}
static void function2() {
for (int i = 0; i < 4; i++)
{
Console.WriteLine("Thread function 2");
}
}
public static void Main()
{
Task thread1 = Task.Factory.StartNew(() => function1());
Task thread2 = Task.Factory.StartNew(() => function2());
Task.WaitAll(thread1, thread2);
Console.WriteLine("End of Main function.");
}
}
Output
Thread function 1
Thread function 1
Thread function 1
Thread function 1
Thread function 2
Thread function 2
Thread function 2
Thread function 2
End of Main function.
Thread function 1
Thread function 1
Thread function 1
Thread function 2
Thread function 2
Thread function 2
Thread function 2
End of Main function.
Using Thread.Join() method
This method blocks the calling thread until the thread represented by this instance terminates, this method requires including namespace:using System.Threading;
Example
using System;
using System.Threading;
public class Program
{
static void function1() {
for(int i = 0; i < 4; i++)
{
Console.WriteLine("Thread function 1");
}
}
static void function2() {
for (int i = 0; i < 4; i++)
{
Console.WriteLine("Thread function 2");
}
}
public static void Main()
{
Thread thread1 = new Thread(new ThreadStart(function1));
Thread thread2 = new Thread(new ThreadStart(function2));
thread1.Start();
thread1.Join();
thread2.Start();
thread2.Join();
Console.WriteLine("End of Main function.");
}
}
Output
Thread function 1
Thread function 1
Thread function 1
Thread function 1
Thread function 2
Thread function 2
Thread function 2
Thread function 2
End of Main function.
Thread function 1
Thread function 1
Thread function 1
Thread function 2
Thread function 2
Thread function 2
Thread function 2
End of Main function.