C# Sample Code : ThreadInterrupt

using System;
using System.Threading;

namespace ThreadInterrupt
{
   class Program
   {

       public static Thread sleeper;
       public static Thread waker;

       public static void Main(string[] args)
       {
           Console.WriteLine("Enter Main method");
           sleeper = new Thread(new ThreadStart(PutThreadToSleep));
           waker = new Thread(new ThreadStart(WakeThread));
           sleeper.Start();
           waker.Start();
           Console.WriteLine("Exiting Main method");
           Console.ReadLine();

       }

       //thread sleeper threadStart
       private static void PutThreadToSleep()
       {
           for (int i = 0; i < 50; i++)
           {
               Console.Write(i + " ");
               if (i == 10 || i == 20 || i == 30)
               {
                   try
                   {
                       Console.WriteLine("Sleep, Going to sleep at {0}",
                           i.ToString());
                       Thread.Sleep(20);
                   }
                   catch (ThreadInterruptedException e)
                   {
                       Console.WriteLine("Forcibly ");
                   }
                   Console.WriteLine("woken");
               }
           }
       }

       //thread waker threadStart
       private static void WakeThread()
       {

           for (int i = 51; i < 100; i++)
           {
               Console.Write(i + " ");

               if (sleeper.ThreadState == ThreadState.WaitSleepJoin)
               {
                   Console.WriteLine("Interrupting sleeper");
                   sleeper.Interrupt();
               }
           }

       }
   }
}

No comments:

Post a Comment