C# 多线程学习系列二

一、关于前台线程和后台线程

1、简介

CLR中线程分为两种类型,一种是前台线程、另一种是后台线程.

前台线程:应用程序的主线程、Thread构造的线程都默认为前台线程

后台线程:线程池线程都为后台线程

2、区别

前台线程:前台线程一般执行重要性很高的任务,至于什么是重要性很高,这个需要结合业务综合考虑,哪些操作是当前应用程序必须执行的.

后台线程:这里需要注意,当一个进程的所有前台线程关闭时,也就是当应用程序推出的时候,无论后台线程有没有执行完它的任务,它都会被强制关闭.但是,当应用程序开启时,它又会重新启动.后台线程一般执行不重要、耗时很短的任务,就算进程(应用程序)关闭了,导致它强制关闭,也不会造成影响的任务.比如系统清理程序等.

注意:一般进程会在所有的前台线程执行完毕时关闭.

3、代码演示区别

前台线程:

        static void Main(string[] args)
        {
            var thread = new Thread(DoWork);
            thread.Start();
        }

        private static void DoWork()
        {
            Thread.Sleep(2000);
            Console.WriteLine("子线程处理完工作,已结束");
        }

子线程停留两秒后,控制台消失.

后台线程:

        static void Main(string[] args)
        {
            var thread = new Thread(DoWork);
            thread.IsBackground = true;
            thread.Start();
        }

        private static void DoWork()
        {
            Thread.Sleep(2000);
            Console.WriteLine("子线程处理完工作,已结束");
        }

控制台不等子线程处理完,直接消失.

效果很直观,前台线程会执行完才结束进程,但是后台线程则不会.

猜你喜欢

转载自www.cnblogs.com/GreenLeaves/p/9955781.html
今日推荐