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,如果是线程池…
  • 应用程序无法正常退出的一个常见原因是还有活跃的前台线程。