https://blog.csdn.net/snakorse/article/details/43888847

要点:

1、当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的。

2、当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束。

3、只有IsBackground=TRUE的线程才会随着主线程的退出而退出。

4、当初始化一个线程,把Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的退出而退出。

5、原理:只要所有前台线程都终止后,CLR就会对每一个活在的后台线程调用Abort()来彻底终止应用程序。

Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。

既然前台线程和后台线程有这种差别,那么我们怎么知道该如何设置一个线程的IsBackground属性呢?下面是一些基本的原则:对于一些在后台运行的线程,当程序结束时这些线程没有必要继续运行了,那么这些线程就应该设置为后台线程。比如一个程序启动了一个进行大量运算的线程,可是只要程序一旦结束,那个线程就失去了继续存在的意义,那么那个线程就该是作为后台线程的。而对于一些服务于用户界面的线程往往是要设置为前台线程的,因为即使程序的主线程结束了,其他的用户界面的线程很可能要继续存在来显示相关的信息,所以不能立即终止它们。这里我只是给出了一些原则,具体到实际的运用往往需要编程者的进一步仔细斟酌。
一般后台线程用于处理时间较短的任务,如在一个Web服务器中可以利用后台线程来处理客户端发过来的请求信息。而前台线程一般用于处理需要长时间等待的任务,如在Web服务器中的监听客户端请求的程序,或是定时对某些系统资源进行扫描的程序。

转载于:https://www.cnblogs.com/liuqiyun/p/10030426.html

C# IsBackground作用相关推荐

  1. C# Thread IsBackground作用

    背景 之前在做一个定时下载任务的时候,使用的是一个主线程在执行任务:后面需求调整了,需要在启用一个子线程执行优先级更高的单独通道下载.于是下意识的这么做 new Thread //创建后台线程Thre ...

  2. IsBackground对线程的重要作用

    原文: IsBackground对线程的重要作用 要点: 1.当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的. 2.当主线程退出的时候,IsBackgroun ...

  3. C# 多线程Thread.IsBackground=True的作用

    C#中多线程的线程加.IsBackground = true与不加有什么区别? 按照MSDN上讲:"获取或设置一个值,该值指示某个线程是否为后台线程." 其实这个解释并不到位,至少 ...

  4. 关于Thread.IsBackground属性的理解(转载)

    C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程.个人感觉这样的解释等于没有解释. .Net中的线程,可以分为后台 ...

  5. html css is图片,isbackground

    isbackground 有何作用 首先不是为了多线程而多线程,多线程会极大的带来额外的出错的几率. C#中第一个打开窗口的线程是主线程,也是处理UI的线程,最好保持这个线程通畅,即不要有阻塞操作,如 ...

  6. Object的finalize()方法的作用是否与C++的析构函数作用相同

    Object的finalize()方法的作用是否与C++的析构函数作用相同 public class Finalization {private static Finalization finaliz ...

  7. 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin

    1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...

  8. 【B/S实践】解决:vs中修改样式表后不起作用的问题

    缓存,有好多,cpu和内存之间的三级缓存,浏览器内的缓存! 缓存是因为速率不对等,通过缓存来加速内容的显示! 今天我在敲牛腩的时候遇到一个问题,找了半小时,才发现是缓存导致的问题! 试着运行aspx文 ...

  9. 卷积神经网络之卷积计算、作用与思想 深度学习

    博客:blog.shinelee.me | 博客园 | CSDN 卷积运算与相关运算 在计算机视觉领域,卷积核.滤波器通常为较小尺寸的矩阵,比如3×33×3.从这个角度看,多层卷积是在进行逐层映射,整 ...

最新文章

  1. 详解python2 和 python3的区别
  2. 列名 userid 不明确。 表结构_那些你不知道的表结构设计思路
  3. 修复病毒破坏的文件关联并恢复程序图标
  4. jwt token 过期刷新_如何在SpringBoot中集成JWT(JSON Web Token)鉴权
  5. html+input+hidden,input type=hidden
  6. spark sql 数据类型转换_spark dataframe 类型转换
  7. 【DL小结5】Transformer模型与self attention
  8. PDF在线裁剪页面(一页剪切为多页并自动合并)的方法
  9. D - Frodo and pillows CodeForces - 760B
  10. WeaveSocket框架-Unity太空大战游戏-服务端-1
  11. RC并联电路传递函数用MATLAb,RC电路(一)RC串联、并联电路详解
  12. Electron-vueda打包EXE文件,打开后白屏
  13. 现在学java好还是python好_县花一现的“现”是什么意思?
  14. 【OpenGL】笔记三、着色器
  15. TypeError: argument 1 has unexpected type 'NoneType'(解决办法)
  16. [SRv6] [华为] EVPN VPLS over SRv6实验
  17. 用python快速群发邮件
  18. linux怎么看系统内存多大内存频率,linux 系统管理中的查看内存插槽数最大容量和频率...
  19. ffmpeg利用滤镜合并两个视频,一左一右---avfilter_link实现
  20. 如何安装PyTorch

热门文章

  1. 启动报异常:org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
  2. DAPP开发中Web3唤醒MetaMask签名数据+Java校验签名实现去中心化和中心化用户数据的鉴权
  3. 以太坊区块链之基本环境搭建
  4. IDEA中使用Junit测试并提高覆盖率
  5. Resilio Sync和Syncthing———两个P2P同步软件的评测
  6. 23 JS常用二维数组操作
  7. i5-10600K和R5 3600X 哪个好
  8. python语音合成_python腾讯语音合成
  9. pdf编辑器软件,分享一款考编用的pdf软件,挺合适的!
  10. string转TCHAR