Csharp/C Sharp/Thread/Thread Sleep
Thread sleep demo
<source lang="csharp">
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" ); } }
</source>
Thread Test: Sleep Interupt Resume
<source lang="csharp"> /*
* 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(); } } }
}
</source>