记得C\C++中只要主线程结束后整个进程会结束,不论次线程是否已经运行完。在.NET的世界中,进程的结束与否与全部标记为Foreground线程是否运行完毕有关。
使用Thread类创建的线程,默认是Foreground线程。当然可以通过 Thread.IsForeground
属性设置。
下面给出两个例子,这两个例子都是运行一个线程,在控制台打印一个组数字。只不过,一个是Foreground线程,另一个是Background线程。
打印数字的代码:
public class Printer |
- Foreground线程
Foreground线程的例子:
class Program |
由于创建的次线程是Foreground线程,所以控制台程序会等到所有Foreground线程结束后才退出。
- Background线程
Background线程的例子
class Program |
由于创建的次线程是Background线程,所以控制台程序会在主线程运行结束后立马退出,即执行完main函数。