C#从零开始学线程_004_前台进程与后台进程


前台线程与后台线程的区别:

  • 进程(程序)会等待所有的前台线程完成后再结束工作(有一个前台线程未结束,程序都不会结束);
  • 如果只剩下后台线程(所有的前台线程都已经结束),进程(程序)会直接结束工作。

例如下面这段代码,t1线程与t2线程只能输出到9。因为t1是后台线程,所以前台线程t2输出9之后结束的时候,t1也被结束了。

 1 internal void Do()
 2 {
 3     Thread t1 = new Thread(() => PrintNumber(1000));
 4     t1.IsBackground = true;                             //设t1为后台进程
 5 
 6     Thread t2 = new Thread(() => PrintNumber(10));
 7     t2.IsBackground = false;                            //前台线程;如不设置,线程默认为前台线程
 8 
 9     t1.Start();
10     t2.Start();
11 }
12 
13 private void PrintNumber(int count)
14 {
15     for (int i = 0; i < count; i++)
16     {
17         Thread.Sleep(1000);
18         Console.WriteLine(i.ToString());
19     }
20 }