在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)

转载于:https://www.cnblogs.com/lytwajue/p/7225774.html

在C#中怎样推断线程当前所处的状态相关推荐

  1. 读后感和机翻《他们在看哪里,为什么看?在复杂的任务中共同推断人类的注意力和意图》

    以下是研究朱松纯FPICU概念中I(intent)的相关论文记录: 读后感: 作者干了什么事? 算法可以从视频中预估人类的注意力位置和意图. 怎么实现的? 提出了一个人-注意力-对象(HAO)图来联合 ...

  2. c#中如何跨线程调用windows窗体控件?

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial ...

  3. C#如何判断线程池中所有的线程是否已经完成(转)

    其 实很简单用ThreadPool.RegisterWaitForSingleObject方法注册一个定时检查线程池的方法,在检查线程的方法内调用 ThreadPool.GetAvailableThr ...

  4. [.Net线程处理系列]专题二:线程池中的工作者线程

    目录: 一.上节补充 二.CLR线程池基础 三.通过线程池的工作者线程实现异步 四.使用委托实现异步 五.任务 六.小结 一.上节补充 对于Thread类还有几个常用方法需要说明的. 1.1 Susp ...

  5. java中我爱你_Java线程学习(转)

    编写具有多线程能力的程序经常会用到的方法有: run(),start(),wait(),notify(),notifyAll(),sleep(),yield(),join() 还有一个重要的关键字:s ...

  6. java中等待所有线程都执行结束

    使用CountDownLatch,这其实是最优雅的写法了,每个线程完成后都去将计数器减一,最后完成时再来唤醒 @Test public void testThreadSync3() { final V ...

  7. 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

    文章目录 一.判定当前线程是否是主线程 二.子线程中执行主线程方法 三.主线程中执行子线程方法 一.判定当前线程是否是主线程 在 Android 中 , 如果要判定当前线程是否是主线程 , 可以使用如 ...

  8. 线程的常用方法——currentThread方法||在main方法中直接调用run()方法,没有开启新的线程,以在run方法中的当前线程就是main线程||启动子线程,子线程会调用run方法

    线程的常用方法--currentThread方法 Thread.currentThread()方法可以获得当前线程 Java 中的任何一段代码都是执行在某个线程当中的. 执行当前代码的线程就是当前线程 ...

  9. 工作中如何使用线程池的?自己如何定义一个线程池?

    工作中如何使用线程池的?自己如何定义一个线程池? import java.util.concurrent.*;public class MyThreadPoolDemo {public static ...

最新文章

  1. 独家 | 可预测COVID-19病例峰值的新算法
  2. NameValueCollection详解
  3. STM32定时器的TRGO信号
  4. 计算机文化基础知识在未来工作中的应用论文,大学计算机文化基础论文范文2篇...
  5. mysql 书签查找_my-bookmark
  6. redis性能9个checklist和实操
  7. 利用一维数组求菲波那契数列前40项的和并输出结果。_[W2D2]斐波那契数列
  8. java xmpp openfire_XMPP协议学习笔记三(Openfire服务器端搭建开发环境)
  9. IntelliJ IDEA 2019.1.1 预览版发布,以及对旧版本的更新
  10. 【图论】【poj 3020】Antenna Placement
  11. 同花顺python_同花顺python
  12. 智慧城市的顶层设计与底层对接
  13. ie浏览器文档模式设置
  14. 利用python批量修改word文档页眉
  15. 4个基本不等式的公式高中_基本不等式公式四个
  16. Java计算文件MD5值
  17. el表达式设置option标签selected
  18. 2022年4月语音合成(TTS)和语音识别(ASR)论文月报
  19. 2022年版中国碳化硅(SiC)市场深度调研与投资可行性分析报告
  20. Batch Size 对训练的影响

热门文章

  1. 比特币vs分布式账本vs以太坊vs区块链
  2. 如何从头开始构建自己的Linux Dotfiles Manager
  3. 23岁一无所有怎么办_我搬到国外去创业,然后一无所有。
  4. github充当服务器_如何创建充当链接HTML按钮
  5. 体检系统前端源码_给您的前端进行健康检查
  6. Android逆向之调试smali代码基础
  7. win10 安装 python报错-已安装这个产品的另一版本
  8. java怎么返回xml_java – 如何从Web服务返回XML
  9. Python数据分析可以应用到哪些领域
  10. 腾讯全力支持鸿蒙,腾讯宣布大力发展车联网,或与华为鸿蒙强强联合!