【多线程-前台线程和后台线程】
来源:互联网 发布:音悦台点歌机加歌软件 编辑:程序博客网 时间:2024/05/29 09:37
一.前台和后台线程的区别:
所有前台线程执行完毕以后,应用程序的进程结束。而不论后台进程是否结束。
默认情况下新建的线程为前台线程,可以使用Thread.IsBackground属性查看
// // 摘要: // 获取或设置一个值,该值指示某个线程是否为后台线程。 // // 返回结果: // 如果此线程是后台线程或即将成为后台线程,则为 true;否则为 false。 // // 异常: // System.Threading.ThreadStateException: // 线程已死。 public bool IsBackground { get; set; }
二.所有前台线程结束,后台线程即使没有结束,该进程也会结束:
class Program { private static Thread subthread ; static void Main(string[] args) { Thread.CurrentThread.Name = "Main线程"; Console.WriteLine("{0}后台线程",Thread.CurrentThread.Name+Thread.CurrentThread.IsBackground);// 如果此线程是后台线程或即将成为后台线程,则为 true;否则为 false。 subthread = new Thread(new ThreadStart(GetShow)); //无参数的入口方法线程 subthread.Name = "无参数的入口方法线程"; subthread.IsBackground = true; //设置为后台进程 subthread.Start(); //开启线程 Thread.Sleep(2000); Console.WriteLine("{0}后台线程", Thread.CurrentThread.Name+Thread.CurrentThread.IsBackground+",结束"); } static void GetShow() { Console.WriteLine("{0}后台线程", Thread.CurrentThread.Name+Thread.CurrentThread.IsBackground); try { Console.WriteLine("休息4秒"); Thread.Sleep(4000); } catch (Exception ex) { Console.WriteLine("线程被唤醒,只休息了5秒"); Console.WriteLine(ex.Message); } Console.WriteLine("{0}后台线程", Thread.CurrentThread.Name+Thread.CurrentThread.IsBackground + ",结束"); } }
三. 当所有的前台线程结束后,进程才能结束:
即:注释上面的代码: //subthread.IsBackground = true;
0 0
- 多线程-前台和后台线程
- 【多线程-前台线程和后台线程】
- 前台线程和后台线程
- 前台线程和后台线程
- 前台线程和后台线程
- 前台线程和后台线程
- 前台线程和后台线程
- 前台线程和后台线程
- 前台线程和后台线程
- 前台线程和后台线程
- 前台线程和后台线程
- 前台线程和后台线程
- C#多线程——前台线程和后台线程
- C#多线程——前台线程和后台线程
- 前台线程和后台线程的区别
- c# 后台线程和前台线程
- 前台线程和后台线程的区别
- java前台线程和后台线程
- 巧用ViewPager 打造不一样的广告轮播切换效果
- ruby计算时间差
- Could not initialize class com.ali.unit.rule.Router
- Cgywin下安装SeismicUnix的步骤
- 程序源弃坑之路7(js软键盘)
- 【多线程-前台线程和后台线程】
- 文献阅读笔记——Action Recognition with Stacked Fisher Vectors
- 怎么用快启动U盘启动盘制作工具将U盘制作成一个多系统安装盘
- CAEAGLLayer
- 日志组件slf4j介绍及配置详解
- RecyclerView添加onItemClickListener更佳的解决方案
- 树莓派摄像头模块没有/dev/video0设备节点的问题
- apache-activemq(三)
- Eclipse中安装部署maven插件