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


相关推荐

  • pycharm中格式化快捷键是什么_pycharm快捷键大全

    pycharm中格式化快捷键是什么_pycharm快捷键大全(1)快捷键:Ctrl+Alt+L可以将代码格式工整化(2)鼠标点击

    2025年7月14日
    0
  • google的ipv6地址_Google礼品卡

    google的ipv6地址_Google礼品卡#GooglePlus2a00:1450:8007::64plus.google.com2404:6800:8005::62talkgadget.google.com##Google.comGoogle.com2404:6800:8005::68www.google.com#主页2404:6800:8005::c1m.google.com#Google移动版2404:6…

    2022年10月9日
    0
  • 【报错解决办法】ModuleNotFoundError: No module named ‘numba‘[通俗易懂]

    【报错解决办法】ModuleNotFoundError: No module named ‘numba‘[通俗易懂]numba是一款可以将python函数编译为机器代码的JIT编译器,经过numba编译的python代码(仅限数组运算),其运行速度可以接近C或FORTRAN语言。python之所以慢,是因为它是靠CPython编译的,numba的作用是给python换一种编译器。numba可以基于llvm动态生成优化代码,提高python的执行效率,只需要给python代码加上修饰器就好了。如果遇到ImportError:Nomodulenamednumba这样的问题,安装nu

    2022年10月23日
    0
  • 哈佛大学公开课《幸福课》笔记「建议收藏」

    哈佛大学公开课《幸福课》笔记「建议收藏」目录概述第一讲什么是积极心理学第二讲为何研究积极心理学?第三讲幸福是一种随机现象吗?第四讲积极的环境可以改变人第五讲环境的力量第六讲乐观主义第七讲逆境还是机遇第八讲感激第九讲改变第十讲如何去改变第十一讲养成良好的习惯第十二讲写日记第十三讲面对压力第十四讲过犹不及第十五讲完美主义第十六讲享受过程第十七讲运动与冥想第十八讲睡眠、触摸和爱情的重要性第十九讲如何让爱情地…

    2022年7月25日
    16
  • java redis模糊查询_Redis模糊查询「建议收藏」

    java redis模糊查询_Redis模糊查询「建议收藏」最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!!可以通过Redis中keys命令进行获取key值,具体命令格式:keyspattern文中提到redis中允许模糊查询的有3个通配符,分别是:*,?,[]其中:*:通配任意多个字符?:通配单个字符[]:通配括号内的某一个字符===============…

    2022年5月29日
    40
  • java static 存在哪里_java中的静态变量和Class对象究竟存放在哪个区域?「建议收藏」

    java static 存在哪里_java中的静态变量和Class对象究竟存放在哪个区域?「建议收藏」JDK7的官方解释:CurrentlystaticfieldsarestoredintheinstanceKlassbutwhenthosearemovedintonativememorywe’dhavetohaveanewcardmarkstrategyforstaticfields.Thiscouldbesomethinglik…

    2022年5月7日
    82

发表回复

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

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