Mega Code Archive

 
Categories / C# / Thread
 

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);   } }