前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# 多线程学习系列二

C# 多线程学习系列二

作者头像
郑小超.
发布2018-12-12 16:06:32
4160
发布2018-12-12 16:06:32
举报
文章被收录于专栏:GreenLeaves

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

1、简介

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

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

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

2、区别

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

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

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

3、代码演示区别

前台线程:

代码语言:javascript
复制
        static void Main(string[] args)
        {
            var thread = new Thread(DoWork);
            thread.Start();
        }

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

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

后台线程:

代码语言:javascript
复制
        static void Main(string[] args)
        {
            var thread = new Thread(DoWork);
            thread.IsBackground = true;
            thread.Start();
        }

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档