.NET多线程技术详解(3) 线程状态

C#的线程包括以下几种状态:

成员名称

说明

Aborted

线程处于 Stopped 状态中。 

AbortRequested

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

Background

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

Running

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

Stopped

线程已停止。 

StopRequested

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

Suspended

线程已挂起。 

SuspendRequested

正在请求线程挂起。 

Unstarted

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

WaitSleepJoin

由于调用 WaitSleep Join,线程已被阻止。 

ThreadState 为线程定义了一组所有可能的执行状态。一旦线程被创建,它就至少处于其中一个状态中,直到终止。在公共语言运行库中创建的线程最初处于 Unstarted 状态中,而进入运行库的外部线程则已经处于 Running 状态中。通过调用 Start 可以将 Unstarted 线程转换为 Running 状态。并非所有的 ThreadState 值的组合都是有效的;例如,线程不能同时处于 Aborted Unstarted 状态中。

下表显示了导致状态更改的操作。

操作

ThreadState

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

Unstarted

线程调用 Start

Unstarted

线程开始运行。

Running

线程调用 Sleep

WaitSleepJoin

线程对其他对象调用 Wait

WaitSleepJoin

线程对其他线程调用 Join

WaitSleepJoin

另一个线程调用 Interrupt

Running

另一个线程调用 Suspend

SuspendRequested

线程响应 Suspend 请求。

Suspended

另一个线程调用 Resume

Running

另一个线程调用 Abort

AbortRequested

线程响应 Abort 请求。

Stopped

线程被终止。

Stopped

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值