MSDN以及许多其他来源声称线程池中的工作线程始终是后台线程。
"线程池线程是后台线程。" (MSDN)
"池化线程始终是后台线程。" (C#中的线程,Joseph Albahari)
通过设置,我可以轻松地使工作线程成为非后台线程
Thread.CurrentThread.IsBackground = false;
应用程序将一直等待,直到线程完成。
这有什么问题吗?
MSDN以及许多其他来源声称线程池中的工作线程始终是后台线程。
"线程池线程是后台线程。" (MSDN)
"池化线程始终是后台线程。" (C#中的线程,Joseph Albahari)
通过设置,我可以轻松地使工作线程成为非后台线程
Thread.CurrentThread.IsBackground = false;
应用程序将一直等待,直到线程完成。
这有什么问题吗?
是的,你可以更改它们。但你不应该这样做。
出于与借来的汽车重新油漆相同的原因,其他线程属性(如优先级和MTA)也是如此。
如果你想要不同类型的线程,请创建自己的线程。
线程什么时候结束?当你的方法结束时吗?我非常怀疑这是正确的。线程池的整个重点在于,一旦你的线程完成,它就会被放回到池中以便重复使用。现在你已经放开了一个线程,它已经回到了线程池中,而你的应用程序仍在运行,因为它是前台线程。没有办法将该线程取出并终止它。