当前位置:编程学习 > C#/ASP.NET >>

C#线程从陌生到熟悉(2)

 

首先我们来看看线程的状态

线程状态

表1-1 ThreadState定义的枚举常数

成员名称

   

Aborted

线程处于Stopped状态中

AbortRequested

已对线程调用了Thread.Abort方法,但线程尚未收到试图终止它的挂起的System.Threading. ThreadAbortException

Background

线程正作为后台线程执行(相对于前台线程而言)。此状态可以通过设置Thread.IsBackground属性来控制

Running

线程已启动,它未被阻塞,并且没有挂起的ThreadAbortException

Stopped

线程已停止

StopRequested

正在请求线程停止。这仅用于内部

Suspended

线程已挂起

SuspendRequested

正在请求线程挂起

Unstarted

尚未对线程调用Thread.Start方法

WaitSleepJoin

由于调用WaitSleepJoin,线程已被阻止

Thread对象的ThreadState属性提供一个由ThreadState定义的位掩码,它指示线程的当前状态。一个线程至少总是处于ThreadState枚举中定义的一个可能状态,并且可以同时处于多个状态。

注意,只能在一些调试方案中使用线程状态,而不应该在代码中使用线程状态来同步线程活动。

在创建托管线程时,该线程处于Unstarted状态。线程会保持Unstarted状态,直到易做图作系统调度到已启动状态。调用Start方法使操作系统知道该线程可启动,但是它并不直接更改线程的状态。一旦线程处于已启动的状态中,就可以执行许多操作来使线程更改状态。表1-2列出了使状态发生更改的操作,以及相应的新状态。

表1-2 使线程状态发生更改的操作及相应的新状态

   

ThreadState

在公共语言运行库中创建线程

Unstarted

线程调用Start

Unstarted

线程开始运行

Running

续表

   

ThreadState

线程调用Sleep

WaitSleepJoin

线程对其他对象调用Wait

WaitSleepJoin

线程对其他线程调用Join

WaitSleepJoin

另一个线程调用Interrupt

Running

另一个线程调用Suspend

SuspendRequested

线程响应Suspend请求

Suspended

另一个线程调用Resume

Running

另一个线程调用Abort

AbortRequested

线程响应Abort请求

Stopped

线程被终止

Stopped

  

Abort方法,调用该方法后,在当前线程中引发一个T

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,