
正文
在C#中怎样推断线程当前所处的状态
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在C#中怎样推断线程当前所处的状态
老帅
在C#中。线程对象Thread使用ThreadState属性指示线程状态。它是带Flags特性的枚举类型对象。
ThreadState 为线程定义了
一组全部可能的执行状态
。一旦线程被创建。它就
至少处于当中一个状态中
。直到终止。
在公共语言执行时中创建的线程最初处于Unstarted状态中。而进入执行时的外部线程则已经处于Running状态中。
通过调用 Start能够将Unstarted线程转换为Running状态。并不是全部的ThreadState值的组合都是有效的;比如,线程不能同一时候处于Aborted和Unstarted状态中。
因此推断线程当前的状态必须用bitmask按位运算来达到推断目的,不能直接使用相等来推断。
定义ThreadState例如以下:
1.推断线程是否处于取消状态
A.错误的推断
(MyThread.ThreadState == ThreadState.AbortRequested)
B.正确的推断
(MyThread.ThreadState & ThreadState.AbortRequested) != 0
2.推断线程是否处于执行状态
这个有一点特殊。由于ThreadState.Running本身等于0。不能用&运算,所以推断可用下面方法:
(MyThread.ThreadState == ThreadState.Running)



![[华图]0728王文文老师带你学数量之统筹推断题 [华图]0728王文文老师带你学数量之统筹推断题](https://www.04ip.com/template/qe/style/noimg/15.jpg)



