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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PS2手柄移植到STM32上面的小笔记[通俗易懂]

    PS2手柄移植到STM32上面的小笔记[通俗易懂]一、硬件准备:战舰开发板、PS2手柄接收器、PS2手柄、连接线二、硬件连接:PS2手柄接收器有六个引脚,和单片机连接IO口连接,如下图:接收器信号单片机IOGNDGNDVCC3.3VDI/DATPB12DO/CMDPB13CSPB14CLKPB15三、PS2通信简介通讯时序如下,感觉和SPI很像,也是四线DI与DO是一对同时传输的8bit串行数据,传输的时候需要CS为低电平,CLK由高变低。DO是单片机发送给接收器的信号。

    2022年6月11日
    56
  • python进制转换代码_十进制转二进制编程

    python进制转换代码_十进制转二进制编程这篇文章主要介绍了Python实现的十进制小数与二进制小数相互转换功能,结合具体实例形式详细分析了二进制与十进制相互转换的原理及Python相关实现技巧,需要的朋友可以参考下本文实例讲述了Python实现的十进制小数与二进制小数相互转换功能。分享给大家供大家参考,具体如下:十进制小数⇒二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之…

    2022年9月24日
    3
  • 代码主题darcula_仿IntelliJ Darcula的Swing主题FlatLaf使用方法

    代码主题darcula_仿IntelliJ Darcula的Swing主题FlatLaf使用方法最近Sandeepin想写个基于JavaSwing的RSS阅读器练练手,不过Swing默认主题太丑了,切成系统原生的主题也不是非常好看,正好感觉开发时用的IDEA主题很不错,不管是Light还是Darcula,都符合现代UI的设计风格。自己仿界面肯定很难仿出来,于是网上找找有没有类似风格的SwingUI库。首先找到的是Mouse0w0开源的JavaFXDarculaTheme,不过这是Java…

    2022年6月27日
    99
  • 梯度下降与随机梯度下降概念及推导过程「建议收藏」

    梯度下降与随机梯度下降概念及推导过程「建议收藏」接前一章:常用算法一多元线性回归详解2(求解过程)同这一章的梯度下降部分加起来,才是我们要讲的如何求解多元线性回归.如果写在一章中,内容过长,担心有的同学会看不完,所以拆分成两章.[坏笑]上一章中有提到利用解析解求解多元线性回归,虽然看起来很方便,但是在解析解求解的过程中会涉及到矩阵求逆的步骤.随着维度的增多,矩阵求逆的代价会越来越大(时间/空间),而且有…

    2025年10月25日
    2
  • 面向对象设计大作业——火车售票系统

    面向对象设计大作业——火车售票系统

    2021年10月6日
    66
  • Linux 于 shell 变数 $#,$@,$0,$1,$2 含义解释:

    Linux 于 shell 变数 $#,$@,$0,$1,$2 含义解释:

    2022年1月12日
    55

发表回复

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

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