默认情况下,显示创建的线程都是前台线程,进程会等待内部所有的前台线程执行完才会结束退出

1.默认创建的线程都是前台线程

2.进程会等待所有的前台线程执行完而结束,如果还存在后台线程则会强行中断并且退出。

3.如果关闭程序,但是还存在前台线程没有结束,则程序并不会被完全关闭,任务管理器中还是可以看到进程。

3.通过设置Thread.IsBackground属性来设置线程的是前台还是后台。

例1(两个前台线程)

class Program
{
static void Main(string[] args)
{
Thread thread1 = new Thread(Task1);
Thread thread2 = new Thread(Task2);
thread1.Start();
thread2.Start();
}
private static void Task1()
{
Thread.Sleep();
Console.WriteLine("hello i am first");
}
private static void Task2()
{
Thread.Sleep();
Console.WriteLine("hello i am first");
}
}

控制台会等待两个线程执行完才会退出

例1(Thread1前台,Thread2后台)

class Program
{
static void Main(string[] args)
{
Thread thread1 = new Thread(Task1);
Thread thread2 = new Thread(Task2);
thread1.Start();
thread2.IsBackground = true;//设置2为后台线程
thread2.Start();
}
private static void Task1()
{
Thread.Sleep();
Console.WriteLine("hello i am first");
}
private static void Task2()
{
Thread.Sleep();
Console.WriteLine("hello i am first");
}
}

则控制台在执行完Thread1之后就会自动退出,而此时Thread2还未执行完,由于他是后台线程所以被强制中断

最后:如果程序定义了一个不会完成前台线程,主程序并不会正常结束,所以之前同事遇到一个WPF程序关闭,但是还在占用内存,就很快定位到是某前台线程未执行完成。

C# Thread3——前台线程后台线程的更多相关文章

  1. C#扫盲之:前台线程后台线程

    1.线程分类 线程由程序员创建,可是创建的方式不同,总体来说有两种,一种是个人构造,也就是使用thread类new线程对象创建,这一类线程是大部分程序员知道的,也叫专用线程;还有一种是由CLR创建,这 ...

  2. C#:前台线程后台线程

    1.线程分类 线程由程序员创建,可是创建的方式不同,总体来说有两种,一种是个人构造,也就是使用thread类new线程对象创建,这一类线程是大部分程序员知道的,也叫专用线程;还有一种是由CLR创建,这 ...

  3. Android的UI设计与后台线程交互

    本文将讨论Android应用程序的线程模型以及如何使用线程来处理耗时较长的操作,而不是在主线程中执行,保证用户界面(UI)的流畅运行.本文还将阐述一些用户界面(UI)中与线程交互的API.UI用户界面 ...

  4. Http协议、线程、线程池

    Socket模拟服务端运行代码: 1:启动服务端监听的服务,并接受客户端的连接 1.1 创建Socket Socket listenSocket=new Socket(AddressFamily.In ...

  5. C#夯实基础之多线程二:主线程、前台线程与后台线程

    我们在<C#夯实基础之多线程一:初识多线程>一文中第二部分中指出,既然windows最终发展出了多线程模型,按理说,我们直接使用一个.NetFramework的线程类就可以直接撸代码了,但 ...

  6. Android Priority Job Queue (Job Manager):后台线程任务结果传回前台(三)

     Android Priority Job Queue (Job Manager):后台线程任务结果传回前台(三) 在附录文章4,5的基础上改造MainActivity.java和MyJob.ja ...

  7. C# 前台线程与后台线程的区别和联系

    c#前台线程与后台线程的区别和联系http://www.189works.com/article-13702-1.html 如何取消后台线程的执行http://www.cnblogs.com/shan ...

  8. C# 前台线程和后台线程

    进程会等待所有的前台线程完成后在结束工作,但是如果只剩下后台线程,则会直接结束工作 using System; using System.Collections.Generic; using Syst ...

  9. C# 前台线程与后台线程区别

    using System; using System.Drawing; using System.Windows.Forms; using System.Threading; namespace Wi ...

随机推荐

  1. 前端开发HTML&css入门——一些其他常用的文本标签

    em标签和strong标签 i标签和b标签 small标签 cite标签 q标签和blockquote标签 em主要表示语气上的强调,em在浏览器中默认使用斜体显示strong表示强调的内容,比em更 ...

  2. JavaScript的循环结构和经典题目

    一.JS中的循环结构 循环结构的执行步骤1.声明循环变量:2.判断循环条件;3.执行循环体操作:4.更新循环变量:5.然后循环执行2-4,直到条件不成立,跳出循环. while循环()中的表达式,运算 ...

  3. Python numpy插入、读取至postgreSQL数据库中bytea类型字段

    安装psycopg2模块,此模块用于连接PostgreSQL数据库 ​pip install psycopg2 # -*- coding: utf-8 -*- import psycopg2 impo ...

  4. IOS绘图详解(http://blog.163.com/wkyuyang_001/blog/static/10802122820133190545227/)

    14.1 Quartz概述 Quartz是Mac OS X的Darwin核心之上的绘图层,有时候也认为是CoreGraphics.共有两种部分组成Quartz: Quartz Compositor,合 ...

  5. ztree 获取CheckBox选中节点时,不获取选中上级父节点

    //将第三个参数改为false,表示不去勾选父节点下的所有子节点 zTreeObj.checkNode(node, true, false); setting.check.chkboxType = { ...

  6. Centos7.5 ZABBIX4.0.3版本的编译安装

    Zabbix监控的搭建理论 1.      Zabbix Server会去采集监控数据,采集的监控数据会写入到SQL数据库 2.      Zabbix的WEB后端采用php语言开发,所有配置信息.用 ...

  7. 一、MyBatis基本使用,包括xml方式、注解方式、及动态SQL

    一.简介 发展历史:MyBatis 的前 身是 iBATIS.最初侧重于 密码软件的开发 , 后来发展成为一款基于 Java 的持久层框架. 定      位:MyBatis 是一款优秀的支持自定义 ...

  8. mysql 分页查询及优化

    1.分页查询 select * from table limit startNum,pageSize 或者 select * from table limit pageSize offset star ...

  9. MySQL的运行模式及一些特性,引擎、事务、并发控制、优化总结

    一 MySQL总体架构 上图是<高性能MySQL>中对MySQL总体架构的描述,客户端对服务端的连接有很多条,有一个专门的处理组件,类似tomcat使用线程池处理请求.解析器负责解析sql ...

  10. NOIP2016 D2T2 蚯蚓

    洛谷P2827 其实是一道不是很难的模拟题,暴力好像可以拿80,AC的话要发现其中隐含的单调性 首先是一个小技巧,每次将所有蚯蚓的长度都+q肯定时间复杂度很大,那我们就想,其他所有的蚯蚓加,就相当于取 ...