C#的线程包括以下几种状态:
成员名称 | 说明 |
Aborted | 线程处于 Stopped 状态中。 |
AbortRequested | 已对线程调用了 Thread.Abort 方法,但线程尚未收到试图终止它的挂起的 System.Threading.ThreadAbortException。 |
Background | 线程正作为后台线程执行(相对于前台线程而言)。此状态可以通过设置 Thread.IsBackground 属性来控制。 |
Running | 线程已启动,它未被阻塞,并且没有挂起的 ThreadAbortException。 |
Stopped | 线程已停止。 |
StopRequested | 正在请求线程停止。这仅用于内部。 |
Suspended | 线程已挂起。 |
SuspendRequested | 正在请求线程挂起。 |
Unstarted | 尚未对线程调用 Thread.Start 方法。 |
WaitSleepJoin | 由于调用 Wait、Sleep 或 Join,线程已被阻止。 |
ThreadState 为线程定义了一组所有可能的执行状态。一旦线程被创建,它就至少处于其中一个状态中,直到终止。在公共语言运行库中创建的线程最初处于 Unstarted 状态中,而进入运行库的外部线程则已经处于 Running 状态中。通过调用 Start 可以将 Unstarted 线程转换为 Running 状态。并非所有的 ThreadState 值的组合都是有效的;例如,线程不能同时处于 Aborted 和 Unstarted 状态中。
下表显示了导致状态更改的操作。
操作 | ThreadState |
在公共语言运行库中创建线程。 | Unstarted |
线程调用 Start | Unstarted |
线程开始运行。 | Running |
WaitSleepJoin | |
WaitSleepJoin | |
WaitSleepJoin | |
Running | |
SuspendRequested | |
线程响应 Suspend 请求。 | Suspended |
Running | |
AbortRequested | |
线程响应 Abort 请求。 | Stopped |
线程被终止。 | Stopped |