Foreground vs Background Threads 前台和后台线程
- 默认情况下,你手动创建的线程就是前台线程。
- 只要有前台线程在运行,那么应用程序就会一直处于活动状态。
- 但是后台线程却不行。
- 一旦所有的前台线程停止,那么应用程序就停止了
- 任何的后台线程也会突然终止。
- 注意:线程的前台、后台状态与它的优先级无关(所分配的执行时间)
- 可以通过IsBackground属性判断线程是否是后台线程。 ```csharp using System; using System.Threading;
namespace ThreadTest { class Program { static void Main(string[] args) { Thread worker = new Thread(()=>Console.ReadLine()); if (args.Length > 0) { worker.IsBackground = true; } worker.Start(); } } } ```
- 进程以这种形式终止的时候,可以在退出程序时使用Join来等待后台线程(如果是你自己创建的线程),或者使用signal construct,如果是线程池…
- 应用程序无法正常退出的一个常见原因是还有活跃的前台线程。