03 线程的挂起与恢复


创建完一个线程并启动之后,还可以挂起、恢复、休眠或终止它,下面主要对线程的挂起与恢复进行讲解。 线程的挂起与恢复分别可以通过调用 Thread 类中的 Suspend 方法和 Resume 方法实现,下面对这两个方法进行详细介绍。 1. Suspend 方法 该方法用来挂起线程,如果线程已挂起,则不起作用。 语法如下:

public void Suspend ()


说明

调用 Suspend 方法挂起线程时,.NET 允许要挂起的线程再执行几个指令,目的是为了到达.NET 认为线程可以安全挂起的状态

2. Resume 方法 该方法用来继续已挂起的线程。 语法如下: public void Resume ()


说明

通过 Resume 方法来恢复被暂停的线程时,无论调用了多少次 Suspend 方法,调用 Resume 方法均会使另一个线程脱离挂起状态,并导致该线程继续执行。

【例3】创建一个控制台应用程序,其中通过实例化 Thread 类对象创建一个新的线程,然后调用 Start 方法启动该线程,之后调用 Suspend 方法和 Resume 方法挂起和恢复创建的线程。 语法如下:




static void Main(string[] args)
{
Thread myThread; //声明线程
//用线程起始点的 ThreadStart 委托创建该线程的实例
myThread = new Thread(new ThreadStart(create Thread));
myThread.Start(); //启动线程
myThread.Suspend(); //挂起线程
myThread.Resume();
}
public static void createThread()
{
Console.Write("创建线程");
}


04 线程休眠

线程体眠主要通过 Thread 类的 Sleep 方法实现,该方法用来将当前线程阻止指定的时间,它有两种重载形式,下面分别进行介绍。 (1)将当前线程挂起指定的时间。 语法如下: public static void Sleep(int milliseconds Timeout) millisecondsTimeout:线程被阻止的毫秒数。指定零以指示应挂起此线程以使其他等待线程能够执行,指定 Timeout.Infinite 以无限期阻止线程。 (2)将当前线程阻止指定的时间。 语法如下: public static void Sleep(TimeSpan timeout) timeout:线程被阻止的时间量的 TimeSpan。指定零以指示应挂起此线程以使其他等待线程能够执行,指定 Timeout.Infinite 以无限期阻止线程。 【例4】下面代码用来使当前线程休眠一秒钟。 Thread.Sleep(1000); //使线程休眠一秒钟








- END -




C# 线程的基本操作(二)_应用程序





-----------------------------------