线程

大憨熊 提交于 2019-12-17 11:00:23

01.开启线程
通过Thread类创建了一个线程对象,然后通过IsBackground属性指明该线程为后台线程,如果不设置,默认为前台线程。由于前台线程执行完毕后CLR会无条件的中止后台线程的运行,所以在前面的代码中,若是启动了后台线程,主线程将会继续执行。

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("前台线程ID:"+Thread.GetCurrentProcessorId());
            Thread thread=new Thread(Worker);
            thread.IsBackground = true; //是否为后台线程
            thread.Start();
            Console.ReadKey();
        }

        public static void Worker()
        {
            Console.WriteLine("后台线程ID:"+Thread.GetCurrentProcessorId());
            Thread.Sleep(2000); //线程休眠2秒
            Console.WriteLine("后台线程退出");
        }
    }

在这里插入图片描述
02.
使用函数Join来实现,确保主线程会在后台线程结束后才开始运行
使用Join的时候,主线程会等待后台线程结束之后才能继续执行。前面的代码中,我们使用了Thread构造函数来创建线程对象

   static void Main(string[] args)
        {
            Console.WriteLine("前台线程ID:"+Thread.GetCurrentProcessorId());
            Thread thread=new Thread(Worker);
            thread.Start();
            thread.IsBackground = true; //是否为后台线程
            thread.Join();
            Console.WriteLine("从主线程退出");
        }

        public static void Worker()
        {
            Console.WriteLine("后台线程ID:"+Thread.GetCurrentProcessorId());
            Thread.Sleep(1000);
            Console.WriteLine("后台线程退出");
        }

在这里插入图片描述
03.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!