建议74:警惕线程的IsBackground
建议74:警惕线程的IsBackground
在CLR中,线程分为前台线程和后台线程,即每个线程都有一个IsBackground属性。两者在表现形式上的唯一区别是:如果前台线程不退出,应用程序的进程就会一直存在,必须所有的前台线程全部退出,应用程序才算退出。而后台进程则没有这方面的限制,如果应用程序退出,后台线程也会一并退出。
查看以下代码:
static void Main(string[] args) { Thread t = new Thread(() =>{ Console.WriteLine("线程开始工作……"); //省略工作代码 Console.ReadKey(); Console.WriteLine("线程结束"); }); //注意,默认就为false t.IsBackground = false; t.Start(); Console.WriteLine("主线程完毕"); }
用Thread创建的线程默认是前台线程,也就是IsBackground属性默认是false。以上代码需等到工作结束(敲入一个按键)应用程序才会结束,而如果设置IsBackground为true,应用程序则会立刻结束。
演示代码使用的是Thread,但我们要注意线程池中的线程默认都是后台线程。
基于前后台线程的区别,在实际编码中应该更多地使用后台线程。只有在非常关键的工作中,如线程正在执行事务或占有的某些非托管资源需要释放时,才使用前台线程。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
建议74:警惕线程的IsBackground相关推荐
- 编写高质量代码改善C#程序的157个建议——建议74:警惕线程的IsBackground
建议74:警惕线程的IsBackground 在CLR中,线程分为前台线程和后台线程,即每个线程都有一个IsBackground属性.两者在表现形式上的唯一区别是:如果前台线程不退出,应用程序的进程就 ...
- 线程的IsBackground属性
.Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程.这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出:而对于后台 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议70~74)
建议70:子列表只是原列表的一个视图 List接口提供了subList方法,其作用是返回一个列表的子列表,这与String类subSting有点类似,但它们的功能是否相同呢?我们来看如下代码: 1 p ...
- c#线程中的属性isbackground
要点: 1.当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的. 2.当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行 ...
- IsBackground对线程的重要作用
原文: IsBackground对线程的重要作用 要点: 1.当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的. 2.当主线程退出的时候,IsBackgroun ...
- c# 线程Thread的IsBackground属性
1.当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的. 2.当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束. ...
- 建议收藏,清华高材生准备的90条Python程序建议
阅读本文大概需要 3 分钟. 本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我删除 自己写 Python 也有四五年了,一直是用自己的"强迫症"在维持自己代码的 ...
- python hello world程序编写_编写高质量代码 改善Python程序的91个建议
建议1:理解Pythonic概念 建议2:编写Pythonic代码 建议3:理解Python与C语言的不同之处 建议4:在代码中适当添加注释 建议5:通过适当添加空行使代码布局更为优雅.合理 建议6: ...
- 总结了 90 条写 Python 程序的建议
这是一名5年经验的 Python小伙伴总结的90条python建议,如果你也在学pythpn,准备要学习python,希望这篇文章对你有用. 1. 首先 建议1.理解Pythonic概念--详见Pyt ...
最新文章
- Josephus问题
- centos7 ssr一键脚本_RHEL7(Centos7)下使用shell脚本一键部署服务
- Android开发之自定义Notification(源代码分享)
- 网络爬虫(一):配置selenium、pycharm(windows平台)
- 阿里云张毅萍:构建边缘云全站加速网络体系
- python3抓取图片_通过Python3 爬虫抓取漫画图片
- DB2 存储过程中执行动态SQL的两种写法
- dell加装固态硬盘_技术丨如何进行笔记本硬盘拆装?
- FTP上传下载使用ASCII与binary的区别
- 证件照处理软件(IDPhoto Processor)免费版 v3.2.10
- Multisim14 安装出错情况说明,以及解决办法
- 使用Servlet来连接数据库并在前端展示
- 艾媒研报 |2019年腾讯控股(0700.HK)业务解读及发展趋势研究报告
- CST仿真指导 | 利用软件自带的示例与教程快速建模仿真
- 严蔚敏版数据结构——顺序栈
- SAP-FI-查看供应商,客户,总账科目记账明细
- mysql的char在java中表示为_Java学习篇之-Mysql中varchar门类总结_mysql
- 财务经历——京东换新服务/常用常新:一次换新经历匹配自己的知识库
- 超融合架构 — Hyper Converged Infrastructure 小记
- 可怕的冷读术:十二种瞬间打开陌生…