线程状态
更新:2007 年 11 月
ThreadState 属性提供关于线程状态的信息。因为线程可以在任意给定时间具有多种状态,所以存储在 ThreadState 中的值可以是 ThreadState 枚举中值的组合。例如,如果某个线程在对 Wait 的调用上处于锁定状态,并且另一个线程调用同一线程上的 Abort 方法,则线程将同时处于 WaitSleepJoin 和 AbortRequested 状态。
更改线程状态
一旦线程已启动,就可以调用其方法来更改它的状态。例如,通过调用 Thread.Sleep,您可以使线程暂停一段时间(以毫秒为单位)。Sleep 方法以参数的形式接受一个超时值,即线程保持锁定状态的毫秒数。
如果使用参数 Infinite 调用 Sleep,则会导致线程休眠,直至调用 Interrupt 的另一个线程将其中断为止。Interrupt 方法会将目标线程从其可能处于的任何等待状态中唤醒,并导致引发异常。
还可以通过调用 Suspend 来暂停线程。当线程针对自身调用 Suspend 时,调用将会阻塞,直到另一个线程通过调用 Resume 继续该线程。当一个线程针对另一个线程调用 Suspend 时,调用是非阻止调用,并会导致另一线程暂停。调用 Resume 会中断另一线程的挂起状态并使之继续执行。与 Sleep 不同,Suspend 并不立即停止线程;挂起的线程直到公共语言运行库确定它已达到安全点时才暂停。
Abort 方法通过引发导致线程消亡的 ThreadAbortException 异常使线程停止运行。
有关这些方法的详细信息,请参见 Thread。