线程状态

更新:2007 年 11 月

ThreadState 属性提供关于线程状态的信息。因为线程可以在任意给定时间具有多种状态,所以存储在 ThreadState 中的值可以是 ThreadState 枚举中值的组合。例如,如果某个线程在对 Wait 的调用上处于锁定状态,并且另一个线程调用同一线程上的 Abort 方法,则线程将同时处于 WaitSleepJoinAbortRequested 状态。

更改线程状态

一旦线程已启动,就可以调用其方法来更改它的状态。例如,通过调用 Thread.Sleep,您可以使线程暂停一段时间(以毫秒为单位)。Sleep 方法以参数的形式接受一个超时值,即线程保持锁定状态的毫秒数。

如果使用参数 Infinite 调用 Sleep,则会导致线程休眠,直至调用 Interrupt 的另一个线程将其中断为止。Interrupt 方法会将目标线程从其可能处于的任何等待状态中唤醒,并导致引发异常。

还可以通过调用 Suspend 来暂停线程。当线程针对自身调用 Suspend 时,调用将会阻塞,直到另一个线程通过调用 Resume 继续该线程。当一个线程针对另一个线程调用 Suspend 时,调用是非阻止调用,并会导致另一线程暂停。调用 Resume 会中断另一线程的挂起状态并使之继续执行。与 Sleep 不同,Suspend 并不立即停止线程;挂起的线程直到公共语言运行库确定它已达到安全点时才暂停。

Abort 方法通过引发导致线程消亡的 ThreadAbortException 异常使线程停止运行。

有关这些方法的详细信息,请参见 Thread

请参见

概念

多线程应用程序

线程同步

多线程过程的参数和返回值

多线程处理窗体和控件

委托和 AddressOf 运算符

参考

System.Threading

SyncLock 语句

其他资源

组件中的多线程处理