深入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/

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

 
posted @ 2019-06-27 11:03 Minotauros 阅读(...) 评论(...) 编辑 收藏