Dmi*_*ezo 7 .net c# multithreading threadpool
MSDN以及许多其他来源声称线程池中的工作线程始终是后台.
"线程池线程是后台线程." (MSDN)
"汇集的线程总是后台线程." (在C#中穿线,Joseph Albahari)
我可以通过设置轻松地使工作线程非背景
Thread.CurrentThread.IsBackground = false;
Run Code Online (Sandbox Code Playgroud)
应用程序将等待线程完成.
这有什么问题?
线程什么时候完成?当你的方法结束?我非常怀疑是这样的.线程池的重点是,一旦你的线程完成,它就会被放回池中以便重用.现在你已经放弃了一个线程,它又回到了线程池中,你的应用程序仍在运行,因为它是一个前台线程.没有办法让该线程退出来杀死它.
线程池线程是后台线程
用“与使用 Thread 类创建的线程不同,它们的 IsBackground 属性初始化为 True”来结束这句话。
将其设置为 false 可能有点冒险。线程池线程被回收,我不太确定该属性是否会被重新初始化。它不是与物理操作系统线程关联的属性,它们没有 IsBackground 行为,它是由 CLR 围绕它放置的包装器添加的。所以可能是的。不过,没有理由去搞乱它。
归档时间: |
|
查看次数: |
5260 次 |
最近记录: |