主线程完成后子线程不工作

raf*_* C. 2 c# multithreading background-thread

我正在开发一个应用程序,它从不同的线程监听队列,但我有一个关于线程管理的问题。我从主应用程序启动了一个后台线程。它工作正常,但主应用程序完成后,子线程就会终止。主应用程序完成后是否有继续子线程。

我开始像下面这样的线程。

Thread myNewThread = new Thread(() => Executer.ProcessQueueMessages());
myNewThread.IsBackground = true;
myNewThread.Start();
Run Code Online (Sandbox Code Playgroud)

jas*_*ith 5

正如其他人在评论中所说,但决定不提供完整的答案,后台线程在父线程终止后不会继续运行。

如果您希望该线程继续运行,则需要将其设置为前台线程。

此来源: http://www.c-sharpcorner.com/UploadFile/ff0d0f/working-of-thread-and-foreground-background-thread-in-C-Sharp730/

很好地解释了差异并给出了例子。摘自该州的摘录;

在C#中有以下两种线程。

  1. 前台线程
  2. 后台线程

前台线程

前台线程是那些即使在应用程序退出或退出后仍继续运行的线程。它能够防止当前应用程序终止。在所有前台线程停止之前,CLR 不会关闭应用程序。

后台线程

后台线程是那些在主应用程序退出时也会退出的线程。简而言之,如果我们的主应用程序退出,后台线程也会退出。后台线程是 CLR 的视图,如果所有前台线程都已终止,则当应用程序退出时,所有后台线程都会自动停止。默认情况下,我们创建的每个线程都是前台线程。