MSDN以及许多其他来源声称线程池中的工作线程始终是后台。
“线程池线程是后台线程。” (MSDN)
“汇总线程始终是后台线程。” (穿着C#,Joseph Albahari)
我可以通过设置
轻松地使工作线程非背景Thread.CurrentThread.IsBackground = false;
应用程序将等待线程完成。
这有什么问题?
答案 0 :(得分:12)
是的,您可以更改它们。但你不应该。
出于同样的原因,你不要重新绘制借来的汽车。与优先级和MTA等其他线程属性相同。
如果您想要一种不同类型的线程,请创建自己的线程。
答案 1 :(得分:6)
线程什么时候完成?当你的方法结束?我非常怀疑是这样的。线程池的重点是,一旦你的线程完成,它就会被放回池中以便重用。现在你已经放弃了一个线程,它又回到了线程池中,你的应用程序仍在运行,因为它是一个前台线程。没有办法让那个线程退出来杀死它。
答案 2 :(得分:4)
线程池线程是后台线程
用“他们将IsBackground属性初始化为True来完成该句子,与使用Thread类创建的线程不同。”
将其设置为false可能有点冒险。线程池线程被回收,我不太确定该属性将被重新初始化。它不是与物理操作系统线程关联的属性,它们没有IsBackground行为,它由CLR放置它的包装器添加。所以可能是的。没理由搞乱它。