在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#中怎样推断线程当前所处的状态的更多相关文章

  1. C#中如何判断线程当前所处的状态

    转自原文 在C#中如何判断线程当前所处的状态 在C#中,线程对象Thread使用ThreadState属性指示线程状态,它是带Flags特性的枚举类型对象.    ThreadState 为线程定义了 ...

  2. 在C#中如何判断线程当前所处的状态

    在C#中,线程对象Thread使用ThreadState属性指示线程状态,它是带Flags特性的枚举类型对象.   ThreadState 为线程定义了一组所有可能的执行状态.一旦线程被创建,它就至少 ...

  3. C# 中的IOCP线程池

    原文地址:http://www.theukwebdesigncompany.com/articles/iocp-thread-pooling.php PartOne : Introduction 当使 ...

  4. 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法

    [源码下载] 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法 作者:webabcd 介绍重新想象 Wi ...

  5. Java中的守护线程和非守护线程(转载)

    <什么是守护线程,什么是非守护线程> Java有两种Thread:"守护线程Daemon"(守护线程)与"用户线程User"(非守护线程). 用户线 ...

  6. springmvc中request的线程安全问题

    SpringMvc学习心得(四)springmvc中request的线程安全问题 标签: springspring mvc框架线程安全 2016-03-19 11:25 611人阅读 评论(1) 收藏 ...

  7. Unity 中 使用c#线程

    使用条件   天下没有免费的午餐,在我使用unity的那一刻,我就感觉到不自在,因为开源所以不知道底层实现,如果只是简单的做点简单游戏,那就无所谓的了,但真正用到实际地方的时候,就会发现一个挨着一个坑 ...

  8. Java中的守护线程 & 非守护线程(简介)

    Java中的守护线程 & 非守护线程 守护线程 (Daemon Thread) 非守护线程,又称用户线程(User Thread) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守 ...

  9. HttpApplication中的异步线程

    一.Asp.net中的线程池设置 在Asp.net的服务处理中,每当服务器收到一个请求,HttpRuntime将从HttpApplication池中获取一个HttpApplication对象处理此请求 ...

随机推荐

  1. 洛谷 [P2577] 午餐

    DP + 贪心 我们发现,如果只有一个窗口,贪心即可解决,吃饭时间长的人一定要先打饭 有两个窗口的时候,这条性质依然满足,但是两个窗口如何分配,需要 01 背包 #include <iostre ...

  2. Bluedroid之GKI

    1. 概述 GKI以库libbt-brcm_gki.a的形式提供给Bluedroid使用 该层是一个适配层,适配了OS相关的进程.内存相关的管理,还可以用于线程间传递消息 主要通过变量gki_cb(结 ...

  3. linux根文件系统制作之busybox编译和系统构建【转】

    转自:http://blog.chinaunix.net/uid-29401328-id-5019660.html 介绍完相关文件后我们开始构建文件系统,涉及到的文件等到具体用到的时候再讲. 一.编译 ...

  4. xammp无法启动apache 由于80端口引起的问题 摘自百度经验

    启动过程提示: 15:33:05 [Apache] Problem detected!15:33:05 [Apache] Port 80 in use by "Unable to open ...

  5. 泛型数组 + 记录类型 + Json 之间的转换

    unit Unit3; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  6. 内存 : CL设置

    CL(CAS Latency):为CAS的延迟时间,这是纵向地址脉冲的反应时间,也是在一定频率下衡量支持不同规范的内存的重要标志之一. 内存负责向CPU提供运算所需的原始数据,而目前CPU运行速度超过 ...

  7. HDU 3549 Flow Problem (dinic模版 && isap模版)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 题意: 给你一个有向图,问你1到n的最大流. dinic模版 (n*n*m) #include ...

  8. Codeforces Round #490 (Div. 3)

    感觉现在\(div3\)的题目也不错啊? 或许是我变辣鸡了吧....... 代码戳这里 A. Mishka and Contes 从两边去掉所有\(≤k\)的数,统计剩余个数即可 B. Reversi ...

  9. 转:java中的事件监听是怎样实现随时监听的

    http://blog.csdn.net/qq369201191/article/details/51204006

  10. mongodb培训

    写在前面 公司组织的技术培训,虽然刚接触mongodb没多久,算是入门吧,就组织一次mongodb的入门ppt培训.包括nosql的简单介绍,以及mongodb的一些优缺点,最后包括mongodb的一 ...