C# | How to check current state of a thread

A Thread class is responsible for creating and managing a thread in multi-thread programming. It provides a property known as ThreadState to check the current state of the thread. The initial state of a thread is Unstarted state.

Syntax:

public ThreadState ThreadState{ get; }

Return Value: This property returns the value that indicates the state of the current thread.

Below programs illustrate the use of ThreadState property:

Example 1:




// C# program to illustrate the 
// use of ThreadState property
using System;
using System.Threading;
  
public class GFG {
  
    // Main Method
    static public void Main()
    {
        Thread thr;
  
        // Get the reference of main Thread
        // Using CurrentThread property
        thr = Thread.CurrentThread;
  
        // Display the current state
        // of the main thread
        Console.WriteLine("The name of the current state of the Main " 
                                 + "thread is: {0}", thr.ThreadState);
    }
}


Output:

The name of the current state of the main thread is: Running

Example 2:




// C# program to illustrate the 
// use of ThreadState property
using System;
using System.Threading;
  
public class GFG {
  
    // Main method
    public static void Main()
    {
        // Creating and initializing threads
        Thread TR1 = new Thread(new ThreadStart(job));
        Thread TR2 = new Thread(new ThreadStart(job));
  
        Console.WriteLine("ThreadState of TR1 thread"+
                         " is: {0}", TR1.ThreadState);
  
        Console.WriteLine("ThreadState of TR2 thread"+
                         " is: {0}", TR2.ThreadState);
  
        // Running state
        TR1.Start();
        Console.WriteLine("ThreadState of TR1 thread "+
                           "is: {0}", TR1.ThreadState);
  
        TR2.Start();
        Console.WriteLine("ThreadState of TR2 thread"+
                         " is: {0}", TR2.ThreadState);
    }
  
    // Static method
    public static void job()
    {
        Thread.Sleep(2000);
    }
}


Output:

ThreadState of TR1 thread is: Unstarted
ThreadState of TR2 thread is: Unstarted
ThreadState of TR1 thread is: Running
ThreadState of TR2 thread is: WaitSleepJoin

Reference:

  • https://docs.microsoft.com/en-us/dotnet/api/system.threading.thread.threadstate?view=netframework-4.7.2