Thread State

In this chapter you will learn:

  1. Check the thread state

Check the thread state

using System;/*  ja v  a2  s  .  c  o m*/
using System.Threading;

class MainClass
{
  public static void Countdown() 
  {
    for (int i = 10; i > 0; i--)  {
      Console.Write(i.ToString() + " ");
    }
  }

  public static void DumpThreadState (Thread t ) 
  {
    Console.Write("Current state: ");
    if ((t.ThreadState & ThreadState.Aborted) == ThreadState.Aborted)
      Console.Write("Aborted ");
    if ((t.ThreadState & ThreadState.AbortRequested) == ThreadState.AbortRequested)
      Console.Write("AbortRequested ");
    if ((t.ThreadState & ThreadState.Background) == ThreadState.Background)
      Console.Write("Background ");
    if ((t.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted | ThreadState.Aborted)) == 0)
      Console.Write("Running ");
    if ((t.ThreadState & ThreadState.Stopped) == ThreadState.Stopped)
      Console.Write("Stopped ");
    if ((t.ThreadState & ThreadState.StopRequested) == ThreadState.StopRequested)
      Console.Write("StopRequested ");
    if ((t.ThreadState & ThreadState.Suspended) == ThreadState.Suspended)
      Console.Write("Suspended ");
    if ((t.ThreadState & ThreadState.SuspendRequested) == ThreadState.SuspendRequested)
      Console.Write("SuspendRequested ");
    if ((t.ThreadState & ThreadState.Unstarted) == ThreadState.Unstarted)
      Console.Write("Unstarted ");
    if ((t.ThreadState & ThreadState.WaitSleepJoin) == ThreadState.WaitSleepJoin)
      Console.Write("WaitSleepJoin ");
  }

  public static void Main() 
  {
    Thread t2 = new Thread(new ThreadStart(Countdown));
    DumpThreadState(t2);

    t2.Start();
    DumpThreadState(t2);

    Countdown();

    t2.Abort();
    DumpThreadState(t2);
  }
}

The code above generates the following result.

Next chapter...

What you will learn in the next chapter:

  1. Test foreground / worker behaviors
Home » C# Tutorial » Thread
Thread creation
ThreadStart
Make a thread to sleep
Join thread
Thread attribute
Thread priorities
Thread State
Background thread
Thread interupting
Monitor
Mutex