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