Csharp/C Sharp/Thread/Thread Sleep

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Thread sleep demo

   using System;
   using System.Threading;
   class ThreadTester
   {
      static void Main( string[] args )
      {
         MessagePrinter printer1 = new MessagePrinter();
         Thread thread1 = new Thread ( new ThreadStart( printer1.Print ) );
         thread1.Name = "thread1";
         MessagePrinter printer2 = new MessagePrinter();
         Thread thread2 = new Thread ( new ThreadStart( printer2.Print ) );
         thread2.Name = "thread2";
         MessagePrinter printer3 = new MessagePrinter();
         Thread thread3 = new Thread ( new ThreadStart( printer3.Print  ) );
         thread3.Name = "thread3";
         Console.WriteLine( "Starting threads" );
         thread1.Start();
         thread2.Start();
         thread3.Start();
         Console.WriteLine( "Threads started\n" ); 
      } 
   }
   class MessagePrinter {
      public void Print() 
      {
         Thread current = Thread.CurrentThread; 
         Console.WriteLine(current.Name + " going to sleep" );
         Thread.Sleep ( 4000 );
         Console.WriteLine( current.Name + " done sleeping" );
      } 
   }


Thread Test: Sleep Interupt Resume

/*
 * C# Programmers Pocket Consultant
 * Author: Gregory S. MacBeth
 * Email: gmacbeth@comporium.net
 * Create Date: June 27, 2003
 * Last Modified Date:
 * Version: 1
 */
using System;
using System.Threading;
namespace Client.Chapter_15___Threading
{
  public class ThreadTestSleepInteruptResume
  {
    public static int Main()
    {
      Thread X = new Thread(new ThreadStart(SecondThread));
      X.Start();
      //Cause the second thread to resume
      X.Interrupt();
      //Place the second thread in a suspended state
      X.Suspend();
      //do some work and restart the thread
      X.Resume();
      //force this thread to wait until the seond thread is finished
      X.Join();
      return 0;
    }
    public static void SecondThread()
    {
      Console.WriteLine("Running second thread");
      //Place the second thread a sleep infinitly
      try
      {
        Thread.Sleep(Timeout.Infinite);
      }
      catch (ThreadInterruptedException e)
      {
        Console.WriteLine("Thread Interupted");
      }
      catch(ThreadAbortException e)
      {
        Thread.ResetAbort();
      }
    }
  }
}