C# Thread IsBackground作用
背景
之前在做一个定时下载任务的时候,使用的是一个主线程在执行任务;后面需求调整了,需要在启用一个子线程执行优先级更高的单独通道下载。于是下意识的这么做 new Thread
//创建后台线程Thread bThread = new Thread(new ThreadStart(background1.RunLoop));bThread.Name = "后台线程";复制代码
一开始是没事么问题,后面测试了下发现当程序退出了,线程竟然还在下载,就是说线程没有随着程序的结束而结束;
问题就出在前台线程与后台线程的区别。
C#中的线程分前台线程和后台线程
对于前台线程来说,如果这些线程不退出,则主线程无法退出,则整个进程也无法退出。会造成即使界面窗口关掉了,但是进程管理器里还有该程序。因此,在关闭窗口时,需要编程显示的把这些前台线程关掉才行。但是,这样就会带来个问题,需要记录这些前台线程的实例才行,很不方便。为此,可以把线程定义为后台线程。后台线程与前台线程的唯一区别就是:后台线程不需要主动关闭。当所有前台线程都退出以后,主线程会自动的关掉后台线程,然后让进程退出。
后台线程的定义方法
定义线程为后台线程的方法为:
Thread backgroundThread = new Thread(new ThreadStart(longTest.RunLoop));backgroundThread.IsBackground = true; //定义为后台线程复制代码
后台线程的问题
当然,定义为后台线程时,仍然有一种情况,会导致无法退出的情况。即后台线程引用了主界面的句柄时。很干脆的解决线程无法退出的方法;当然,这里有一个干脆的直接杀掉所有线程的方法:程序主窗口的 Closed 事件中添加代码:
Process.GetCurrentProcess().Kill();
C# Thread IsBackground作用相关推荐
- C# 多线程Thread.IsBackground=True的作用
C#中多线程的线程加.IsBackground = true与不加有什么区别? 按照MSDN上讲:"获取或设置一个值,该值指示某个线程是否为后台线程." 其实这个解释并不到位,至少 ...
- 关于Thread.IsBackground属性的理解(转载)
C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程.个人感觉这样的解释等于没有解释. .Net中的线程,可以分为后台 ...
- C#中Thread.IsBackground 属性
Thread thread.IsBackground =true; //Gets or sets a value indicating whether or not a thread is a ba ...
- Thread.IsBackground
解释: 获取或设置一个值,该值指示某个线程是否为后台线程. 后台线程不会防止应用程序的进程被终止掉. 注意: 主线程中创建了一个线程,线程的IsBackground默认是设置为FALSE的. 主线程退 ...
- C# IsBackground作用
https://blog.csdn.net/snakorse/article/details/43888847 要点: 1.当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为 ...
- Thread.setDefaultUncaughtExceptionHandler作用
刚刚看到ResourceManager源码第一行,就遇到了比较陌生的用法,特意研究一下,如何使用? 看源码的目标不就是学习,更好的来完善自己的代码,而不是面试时候的谈资. 下面是一个自己写的demo, ...
- Thread.isbackground用法
C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程.个人感觉这样的解释等于没有解释. .Net中的线程,可以分为后台 ...
- 关于Thread.IsBackground属性的理解
C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程.个人感觉这样的解释等于没有解释. .Net中的线程,可以分为后台 ...
- 对C#中Thread.IsBackground属性的理解
C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程.个人感觉这样的解释等于没有解释. .Net中的线程,可以分为后台 ...
最新文章
- H.264/H265码流解析
- 数据可视化:Matplotlib vs ggplot2
- 时空大数据赋能智慧城市的思考和实践
- Android开发日常笔记
- mysql alter算法_MySQL ALTER命令_mysql alter_添加_删除_修改
- idea 提示vue插件_Vue + SpringBoot + MyBatis 音乐网站
- 找出一个数组中出现次数最多的那个元素
- servlet需要和ajax,如何使用Servlet和Ajax?
- python前n项和存为一个数组_在Python中存储多个数组
- wireshark抓组播数据_HCIE学习笔记--组播路由协议PIM-DM工作机制解析
- jQuery firefox chrome IE 绑定mousewheel事件
- 公告:CSDN下载频道在线举报功能正式上线
- 12张图读懂模电、数电必备的电路基础知识
- html所有标签大全wps文件,html所有标签及其作用说明.wps
- 导出微信聊天记录生成词云
- win10 企业版2016长期服务激活教程
- 个人认为制作系统盘(U盘启动盘)最干净的方式?
- 跟李沐学深度学习-softmax回归
- 固定资产管理系统能给企业带来什么?
- 【最优化问题】方法总结