zoukankan      html  css  js  c++  java
  • C#:判断当前线程所处状态&委托

      1、线程状态ThreadState

      在C#中,线程对象Thread使用ThreadState属性指示线程状态,它是带Flags特性的枚举类型对象。

      ThreadState 为线程定义了一组所有可能的执行状态。一旦线程被创建,它就至少处于其中一个状态中,直到终止。在公共语言运行时中创建的线程最初处于Unstarted状态中,而进入运行时的外部线程则已经处于Running状态中。通过调用 Start可以将Unstarted线程转换为Running状态。并非所有的  ThreadState值的组合都是有效的;例如,线程不能同时处于Aborted和Unstarted状态中。

      因此判断线程当前的状态必须用bitmask按位运算来达到判断目的,不能直接使用相等来判断。

      2、C#中ThreadState中定义如下:

      3、如何判断当前线程状态

      1)判断线程是否处于取消状态

    (MyThread.ThreadState & ThreadState.AbortRequested) != 0

    2)判断线程是否处于运行状态

        这个有一点特殊,因为ThreadState.Running本身等于0,不能用&运算,所以判断可用以下方法:

           (MyThread.ThreadState == ThreadState.Running)
     
     

       4、.Net 中如何启动线程

      .net下的线程,是通过设置委托对象来初始化,启动的。

      委托是一个继承自多播委托的类型,委托对象可以赋值的方式指向一个或多个方法。 

    1 public void Test()
    2 {
    3     Thread thread = new Thread(new ThreadStart(ThreadMethod));
    4     thread.Start();//开辟一个线程,执行方法
    5 }

     

      推荐:http://zhoufoxcn.blog.51cto.com/792419/187031/ 这篇文章主要讲的是使用委托启动线程(带参、无参启动以及优劣比较)。

      本文仅做为笔记使用,若需转载,请转载文章原文!

  • 相关阅读:
    c# 一段生成6位不重复的随机数字码存8万个
    element ui 踩坑记
    Vue node.js 踩坑记
    javascript 异步回调链式调用 promise
    css 盒模型
    vue node.js 引入 linq
    Vue VsCode 项目 launch.json 文件
    node.js 基本语法识记
    Vue 2.0 入门示例识记
    在Windows系统中建立一个隐藏的帐户(在不登录界面显示)
  • 原文地址:https://www.cnblogs.com/ylhssn/p/5108991.html
Copyright © 2011-2022 走看看