Open In App

C# | How to check current state of a thread

Last Updated : 11 Jul, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report
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: CSharp
// 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: CSharp
// 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:

Similar Reads