C#中判断线程的状态
2017-10-11 09:40
971 查看
在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)
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#:判断当前线程所处状态&委托
- C#中判断线程的状态
- 在C#中如何判断线程当前所处的状态
- C#中如何判断线程当前所处的状态
- C#通过接口与线程通信(捕获线程状态)介绍
- C#线程状态
- C#判断线程池中所有的线程是否已经完成
- 判断当前的网络状态(C#)
- C#中线程状态的判别
- C#如何判断文件处于打开状态
- C#中判断网络连接的状态
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 黄聪:C#程序中判断是否处在DEBUG调试状态或者RELEASE发布状态
- C#使用Ping功能判断网络连接状态或者目标计算机是否开机等
- C#通过接口与线程通信(捕获线程状态)介绍
- 使用InternetGetConnectedState判断本地网络状态(C#举例)
- C# MVC 用户登录状态判断
- C#判断光标是否属于输入状态
- C#中如何判断当前线程是否为主线程
- C# Tip -- 如何优雅的控制线程状态