raf*_* C. 2 c# multithreading background-thread
我正在开发一个应用程序,它从不同的线程监听队列,但我有一个关于线程管理的问题。我从主应用程序启动了一个后台线程。它工作正常,但主应用程序完成后,子线程就会终止。主应用程序完成后是否有继续子线程。
我开始像下面这样的线程。
Thread myNewThread = new Thread(() => Executer.ProcessQueueMessages());
myNewThread.IsBackground = true;
myNewThread.Start();
Run Code Online (Sandbox Code Playgroud)
正如其他人在评论中所说,但决定不提供完整的答案,后台线程在父线程终止后不会继续运行。
如果您希望该线程继续运行,则需要将其设置为前台线程。
很好地解释了差异并给出了例子。摘自该州的摘录;
在C#中有以下两种线程。
- 前台线程
- 后台线程
前台线程
前台线程是那些即使在应用程序退出或退出后仍继续运行的线程。它能够防止当前应用程序终止。在所有前台线程停止之前,CLR 不会关闭应用程序。
后台线程
后台线程是那些在主应用程序退出时也会退出的线程。简而言之,如果我们的主应用程序退出,后台线程也会退出。后台线程是 CLR 的视图,如果所有前台线程都已终止,则当应用程序退出时,所有后台线程都会自动停止。默认情况下,我们创建的每个线程都是前台线程。