《C#多线程编程实战(原书第2版)》——1.8 前台线程和后台线程

本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第1章,第1.8节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.8 前台线程和后台线程

本节将描述前台线程和后台线程,及如何设置该选项来影响程序的行为。

1.8.1 准备工作

为了学习本节,你需要安装Visual Studio 2015。除此之外无需其他准备。本节的源代码放置在BookSamplesChapter1Recipe7目录中。

1.8.2 实现方式

请执行以下步骤来了解程序中前台线程和后台线程的效果:

1.启动Visual Studio 2015。新建一个C#控制台应用程序项目。

2.在Program.cs文件中加入以下using指令:


《C#多线程编程实战(原书第2版)》——1.8 前台线程和后台线程

3.在Main方法下面加入以下代码片段:


《C#多线程编程实战(原书第2版)》——1.8 前台线程和后台线程


《C#多线程编程实战(原书第2版)》——1.8 前台线程和后台线程

4.在Main方法中加入以下代码片段:


《C#多线程编程实战(原书第2版)》——1.8 前台线程和后台线程

5.运行程序。

1.8.3 工作原理

当主程序启动时定义了两个不同的线程。默认情况下,显式创建的线程是前台线程。通过手动的设置threadTwo对象的IsBackground属性为true来创建一个后台线程。通过配置来实现第一个线程会比第二个线程先完成。然后运行程序。

第一个线程完成后,程序结束并且后台线程被终结。这是前台线程与后台线程的主要区别:进程会等待所有的前台线程完成后再结束工作,但是如果只剩下后台线程,则会直接结束工作。

一个重要注意事项是如果程序定义了一个不会完成的前台线程,主程序并不会正常结束。