Csharp/C Sharp/Thread/Thread Sleep
Версия от 15:31, 26 мая 2010; (обсуждение)
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();
}
}
}
}