Thread 设置 IsBackground true false 的 运行差别
1.这是一个 后台线程,IsBackground=true, 主线程完成后,后台子线程也停止了,即使 子线程 还有没运行完,也要停止
class Program
{ static void Main(string[] args)
{
Thread t = new Thread(() => {
Console.WriteLine("5秒后,运行子线程");
Thread.Sleep(TimeSpan.FromSeconds());
Console.WriteLine("运行完毕"); Console.WriteLine("5秒后,再运行子线程任务");
Thread.Sleep(TimeSpan.FromSeconds());
Console.WriteLine("因为主线程要求6秒完成, 这里需要10秒,所以这句话不会输出");
Console.ReadKey();
});
t.IsBackground = true;//设置为后台线程,主线程完成后,后台线程也停止
t.Start();
Console.WriteLine("主线程给 后台子线程 6秒完成任务");
Thread.Sleep(TimeSpan.FromSeconds());
Console.WriteLine("主线程完成了");
} }
2.因为线程IsBackground=false,不是后台线程,所以主线程即使完成了,子线程也会继续完成
class Program
{ static void Main(string[] args)
{
Thread t = new Thread(() => {
Console.WriteLine("5秒后,运行子线程");
Thread.Sleep(TimeSpan.FromSeconds());
Console.WriteLine("子线程运行完毕"); Console.WriteLine("5秒后,再运行子线程任务");
Thread.Sleep(TimeSpan.FromSeconds());
Console.WriteLine("因为线程IsBackground = false,不是后台线程,所以主线程即使完成了,子线程也会继续完成");
Console.WriteLine("请按任意键结束。。。。");
Console.ReadKey();
});
t.IsBackground = false;//因为线程IsBackground = false,不是后台线程,所以主线程即使完成了,子线程也会继续完成
t.Start();
Console.WriteLine("主线程给 子线程 6秒完成任务");
Thread.Sleep(TimeSpan.FromSeconds());
Console.WriteLine("主线程完成了");
} }
Thread 设置 IsBackground true false 的 运行差别的更多相关文章
- 连接数据库超时设置autoReconnect=true
1,问题现象: com.mysql.jdbc.CommunicationsException: The last packet successfully received from the serve ...
- C# 多线程Thread.IsBackground=True的作用
C#中多线程的线程加.IsBackground = true与不加有什么区别? 按照MSDN上讲:“获取或设置一个值,该值指示某个线程是否为后台线程.” 其实这个解释并不到位,至少应该解释一下后台线程 ...
- C#/.NET 中启动进程时所使用的 UseShellExecute 设置为 true 和 false 分别代表什么意思?
原文:C#/.NET 中启动进程时所使用的 UseShellExecute 设置为 true 和 false 分别代表什么意思? 在 .NET 中创建进程时,可以传入 ProcessStartInfo ...
- 设置ASP.NET页面的运行超时时间详细到单个页面及站点
这篇文章主要介绍了如何设置ASP.NET页面的运行超时时间,包括全局超时时间.单个站点超时时间.单个页面请求超时时间,需要的朋友可以参考下 全局超时时间 服务器上如果有多个网站,希望统一设置一 ...
- docker搭建gitlab,设置邮件提醒,并运行runner
接着http://www.cnblogs.com/wsy1030/p/8431837.html 在另一台机子运行gitlab: docker run --name='gitlab' -d -p 222 ...
- 在做了 BasePage 时: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 / / 节中包括
摘自: http://lichengguizy.blog.163.com/blog/static/11771858620122342749552/ 只有在配置文件或 Page 指令中将 enableS ...
- 问题:web.net页面超时;结果:设置ASP.NET页面的运行超时时间详细到单个页面及站点
设置ASP.NET页面的运行超时时间详细到单个页面及站点 这篇文章主要介绍了如何设置ASP.NET页面的运行超时时间,包括全局超时时间.单个站点超时时间.单个页面请求超时时间,需要的朋友可以参考下 全 ...
- Delphi Thread.Queue与Synchronize的区别(差别: Synchronize是阻塞,Queue是非阻塞)
前话: 其实大家要学会看源码, 我接下来要说的这些东东,与其等别人讲,还不如自己搞几个代码试一下,印象还深刻点 TThread.Queue和TThread.Synchronize的区别, 效果上:二 ...
- RocketMQ实战:生产环境中,autoCreateTopicEnable为什么不能设置为true
1.现象 很多网友会问,为什么明明集群中有多台Broker服务器,autoCreateTopicEnable设置为true,表示开启Topic自动创建,但新创建的Topic的路由信息只包含在其中一台B ...
随机推荐
- 51nod 2502 最多分成多少块
小b有个长度为n的数组a,她想将这个数组排序. 然而小b很懒,她觉得对整个数组排序太累了,因此她请你将a分成一些块,使得她只需要对每一块分别排序,就能将整个数组排序. 请问你最多能把a分成多少块. 保 ...
- Maven模块化搭建总结
1.Maven插件在eclipse的安装 windows——>preferences——>Maven——>installations——>add——>installati ...
- No Compiler is Provided in this environment Perhaps you are running on JRE rather than a JDK
问题描述: 在使用Jenkins打包的时候,抛出这样的错,但JDK和Maven都是已经安装,没问题了的.其中Jenkins用的Pipline流水线来部署项目. 问题解决: 在使用Pipline部署项目 ...
- http服务读取配置文件,交叉编译
因为是在windows上编译的代码,在linux上不可执行,所以需要交叉编译 package main import ( "flag" "gopkg.in/ini.v1& ...
- OI歌曲汇总
在学习的间隙,我们广大的OIer创作了许多广为人知的歌曲 这里来个总结 (持续更新ing......) Lemon OI 葛平 Lemon OI chen_zhe Lemon OI kkksc03 膜 ...
- WinDbg 图形界面功能(三)
1.4.调试菜单 调试相关操作的功能菜单在这个下面,比如单步执行等. Go 单击Go调试菜单恢复 (或开始) 在目标上的执行. 此执行将继续,直到抵达某个断点. 异常或事件发生时,该过程结束或调试器将 ...
- CF1237C2 【Balanced Removals (Harder)】
这么妙的题怎么没人发题解啊 首先这是三维的,我们可以对其进行降维打击 先考虑一维怎么做? 我们可以对其该维坐标进行排序,按照顺序输出,可能会多余一个 那拓展到二维呢? 我们可以把它转化成一维,分成很多 ...
- required string parameter 'XXX'is not present 的几种情况
required string parameter 'XXX'is not present 的几种情况 情况一:原因是由于头文件类型不对,可以在MediaType中选择合适的类型,例如GET和POST ...
- Kubernetes Pod概述
Pod简介 Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程. 一个Pod封装一个应用容器,Pod代表部署的一个单位. Pods提供两种共享资源: ...
- java操作数据库,以页面显示学生信息为例
该部分内容实现的功能主要是:从数据库中查询数据并展示到页面,在页面中新增数据信息,在页面中修改数据信息,在页面中删除数据信息. =================stuList.jsp======== ...