C#中线程状态的判别
2014-12-18 08:43
281 查看
在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)
老帅
在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)
相关文章推荐
- C# Tip -- 如何优雅的控制线程状态
- C#--检索线程状态
- C#中如何判断线程当前所处的状态
- C#通过接口与线程通信(捕获线程状态)示例代码
- C#中判断线程的状态
- [叩响C#之门]写给初学者:多线程系列(五)——线程的状态
- C#:判断当前线程所处状态&委托
- C# Thread 线程状态知识
- C#中的多线程——线程状态
- C#中 托管线程的状态
- C#中的线程 -- 同步基础(线程状态,同步上下文)
- C#线程状态
- c# 线程状态及转换
- C# Tip -- 如何优雅的控制线程状态
- C#通过接口与线程通信(捕获线程状态)
- C#通过接口与线程通信(捕获线程状态)介绍
- 在C#中怎样推断线程当前所处的状态
- 在C#中如何判断线程当前所处的状态
- C# ApartmentState 枚举,指定线程单元状态
- c#中线程的状态