zoukankan      html  css  js  c++  java
  • 深入C#并行编程(2) -- 使用线程

      一、可以使用位于命名空间System.Threading中的Thrad类开启线程:

    //声明一个新的线程
    Thread myThread = new Thread(LoopFunc); //传递一个ThreadStart类型的委托(public delegate void ThreadStart())
    //开启该线程
    myThread.Start();
    //循环函数
    void LoopFunc()
    {
        while (true)
        {
            //do…
            Thread.Sleep(1000); //用于暂停执行此函数的线程,单位毫秒(千分之一秒)
        }
    }

      1.通过Thread类的静态属性CurrentThread可以获取执行当前函数所在的线程,通过实例属性ManagedThreadId可以查看当前线程的唯一标识符ID,通过实例属性Name可以获取或设置当前线程的名称;

      2.通过Thread类的实例属性Priority可以获取或设置当前线程的优先级,线程的优先级使用枚举ThreadPriority表示,包括从低到高共5个优先级;
    通过Thread类的实例属性ThreadState可以获取当前线程的状态,线程的状态使用枚举组合ThreadState表示;
    默认情况下,使用Thread类创建的线程都是前台前程,通过Thread类的实例属性IsBackground可以设置该线程是否为后台线程;

      二、当需要开启一个无限循环函数的线程时,一般通过while(true){}来实现,此时,如要正确结束该线程,需要修改循环条件,通过外部控制条件是否终止:

    void LoopFunc()
    {
        bool isContinue = true;
        AppManager.Instance.OnExitAction += () => //给应用关闭事件添加委托,修改执行的判断条件
        {
            isContinue = false;
        }
        while (isContinue)
        {
            //do…
            Thread.Sleep(1000);
        }
        return;
    }

    如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的认可是我写作的最大动力!

    作者:Minotauros
    出处:https://www.cnblogs.com/minotauros/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    研究SandHook
    MYSQL 事务与锁
    Java创造者詹姆斯·高斯林采访
    mybatis like 模糊查询
    【科普】彻底搞清楚什么是交换机什么是路由器。程序员基本功哦
    MinIO的简单使用实践
    如何将微信公众号的文章怎么保存转化为word文档?
    如何在recoil中主动刷新seloctor中缓存的值
    【译文】探索Recoil中的异步请求
    魅族云相册批量下载方案
  • 原文地址:https://www.cnblogs.com/minotauros/p/11095842.html
Copyright © 2011-2022 走看看