C# Thread IsBackground作用

C# Thread IsBackground作用背景之前在做一个定时下载任务的时候,使用的是一个主线程在执行任务;后面需求调整了,需要在启用一个子线程执行优先级更高的单独通道下载。于是下意识的这么做newThread//创建后台线程ThreadbThread=newThread(newThreadStart(background1.RunLoop));b…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

背景

之前在做一个定时下载任务的时候,使用的是一个主线程在执行任务;后面需求调整了,需要在启用一个子线程执行优先级更高的单独通道下载。于是下意识的这么做 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();
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181220.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstrom 2021.12激活吗(JetBrains全家桶)「建议收藏」

    (phpstrom 2021.12激活吗)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1435QFILVV-eyJsaWNlb…

    2022年3月30日
    40
  • 一笔画奇点偶点_一笔画图形奇点

    一笔画奇点偶点_一笔画图形奇点由一点引出的百线段为奇数个,则这个点为奇点。由一点引出的线段为偶数个,则这个点为偶点。一个图形判断能否被一笔画下来,关键是看奇点的个数:当奇点为0个或者2个时(不可能为一个,奇点都是成对出现),

    2022年8月4日
    8
  • Secant Method (Website)[通俗易懂]

    Secant Method (Website)

    2022年2月2日
    56
  • 批处理命令教程 pdf_常用批处理命令

    批处理命令教程 pdf_常用批处理命令【echo命令】  打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo命令将显示当前回显设置。  语法  echo[{on|off}][message]  Sample:@echooff/echohelloworld  在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用>>>^)结合来实现输入一  些…

    2022年8月22日
    5
  • ipx防水等级表_说明知识运用的方法

    ipx防水等级表_说明知识运用的方法“××”是两位数字,第一位表示对固体的防护等级,第二位表示对液体的防护等级。固体防护等级有7个等级;液体防护等级有9个等级;防尘等级(固体防护等级有7个等级)0:没有保护1:防止大的固体侵入2:防止中等大小的固体侵入3:防止小固体进入侵入4:防止物体大于1mm的固体进入5:防止有害的粉尘堆积6:完全防止粉尘进入防水等级(液体防护等级有9个…

    2025年6月4日
    2
  • kubernetes可以实现容器集群的哪些功能_hadoop高可用集群搭建

    kubernetes可以实现容器集群的哪些功能_hadoop高可用集群搭建二进制方式部署Kubernetes高可用集群文章目录二进制方式部署Kubernetes高可用集群1.环境准备1.1.Kubernetes高可用集群部署方式1.2.Kubernetes集群弃用docker容器1.3.Kubernetes集群所需的证书1.4.环境准备1.5.安装cfssl证书生成工具2.操作系统初始化配置3.部署Etcd集群3.1.使用cfssl证书工具生成etcd证书3.2.部署etcd集群4.部署Docker服务4.1.安装docker4.2.为docker创建systemctl启动脚本

    2025年8月28日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号