Unstarted:线程上的 Thread.Start 还未被调用
Running:已调用 Thread.Start,且线程未被阻塞,也没有 ThreadAbortException 处于挂起状态
Aborted:Stopped 状态
AbortRequested:已调用 Thread.Abort,但还未收到处于挂起状态的ThreadAbortException
Stopped:线程已经停止
Suspended:线程已经被挂起
SuspendRequested:线程已被要求挂起
WaitJoinSleep:线程被阻塞,阻塞原因可能是 Wait、Sleep 或Join
下面来对上述成员作简单解释:
1、Unstarted:所有托管线程的初始状态。处于这个状态的线程仅占用内存,不占用 CPU 的资源,因此,理论上可创建无数个这种状态的线程。
2、Running:当前线程已经由其它线程在其上执行 Thread.Start。前面已经提到,这样状态的线程在 Windows 中最大数目为 2000 个。
3、Suspended:已启动,但不处于活动状态。
4、WaitJoinSleep:线程的这种状态说明已被阻塞,原因有三种:
a. 线程等待一个或多个对象(Wait),主要用于同步构造;
b. 线程在特定的时间段内处于休眠状态(Sleep);
c. 线程在等待另一个线程结束(Join) 需要要说明的是一个线程不能使另一个线程进入此状态,线程只能在自己的要求下进入此状态。
5、Stopped:已正常结束,线程死亡,不能再被启动。
6、Aborted:同 Stopped 状态一样,不过它是由于非正常结束而产生的一种状态。