文档视界 最新最全的文档下载
当前位置:文档视界 › c#中关于ThreadState 枚举

c#中关于ThreadState 枚举

c#中关于ThreadState 枚举


指定 Thread 的执行状态。

此枚举具有允许按位组合其成员值的 FlagsAttribute 属性。

[C#]
[Flags]
[Serializable]
public enum ThreadState

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

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

操作 ThreadState
在公共语言运行库中创建线程。 Unstarted
线程调用 Start Running
线程开始运行。 Running
线程调用 Sleep WaitSleepJoin
线程对其他对象调用 Wait。 WaitSleepJoin
线程对其他线程调用 Join。 WaitSleepJoin
另一个线程调用 Interrupt Running
另一个线程调用 Suspend SuspendRequested
线程响应 Suspend 请求。 Suspended
另一个线程调用 Resume Running
另一个线程调用 Abort AbortRequested
线程响应 Abort 请求。 Stopped
线程被终止。 Stopped

除以上说明的状态之外,还有 Background 状态,它指示线程是在后台运行还是在前台运行。

在某个给定时间线程可处于多个状态中。例如,如果一个线程在调用 Wait 时被阻塞,并且另一个线程对阻塞的线程调用 Abort,则阻塞线程将同时处于 WaitSleepJoin 和 AbortRequested 状态中。在这种情况下,
该线程一旦从对 Wait 的调用中返回或被中断,则它将接收 ThreadAbortException 以开始中止。

线程的 Thread.ThreadState 属性提供线程的当前状态。应用程序必须使用位屏蔽来确定线程是否在运行。因为 Running 的值为零 (0),可使用代码(例如 (myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0)测试线程是否在运行。

成员
成员名称 说明 值
Aborted 线程处于 Stopped 状态中。 256
AbortRequested 已对线程调用了 Thread.Abort 方法,但线程尚未收到试图终止它的挂起的 System.Threading.ThreadAbortException。 128
Background 线程正作为后台线程执行(相对于前台线程而言)。此状态可以通过设置 Thread.IsBackground 属性来控制。 4
Running 线程已启动,它未被阻塞,并且没有挂起的 ThreadAbortException。 0
Stopped 线程已停止。 16
StopRequested 正在请求线程停止。这仅用于内部。 1
Suspended 线程已挂起。 64
SuspendRequested 正在请求线程挂起。 2
Unstarted 尚未对线程调用 Thread.Start 方法。 8
WaitSleepJoin 由于调用 Wait、Sleep 或 Join,线程已被阻塞。 32

要求
命名空间: System.Threading

平台: Windows 98,

Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列

程序集: Mscorlib (在 Mscorlib.dll 中)

相关文档
相关文档 最新文档