illustrates the ThreadState property : Thread Properties « Thread « C# / C Sharp






illustrates the ThreadState property

illustrates the ThreadState property
/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy

Publisher: Sybex;
ISBN: 0782129110
*/

/*
  Example14_3.cs illustrates the ThreadState property
*/

using System;
using System.Threading;

public class Example14_3 
{

  // the Countdown method counts down from 10 to 1
  public static void Countdown() 
  {
    for (int counter = 10; counter > 0; counter--) 
    {
      Console.Write(counter.ToString() + " ");
    }
    Console.WriteLine();
  }

  // the DumpThreadState method displays the current Thread's state
  // Note that ThreadState is a bitmask, and multiple states for the
  // same thread are valid
  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 ");
    Console.WriteLine();
  }

  public static void Main() 
  {

    // create a second thread
    Thread t2 = new Thread(new ThreadStart(Countdown));
    DumpThreadState(t2);

    // launch the second thread
    t2.Start();
    DumpThreadState(t2);

    // and meanwhile call the Countdown method from the first thread
    Countdown();

    // shut down the second thread
    t2.Abort();
    DumpThreadState(t2);

  }

}


           
       








Related examples in the same category

1.Current Thread Properties
2.illustrates the use of thread prioritiesillustrates the use of thread priorities
3.Use IsAlive to wait for threads to end
4.Demonstrate thread prioritiesDemonstrate thread priorities