什么是后台线程、前台线程和主线程?
Posted
技术标签:
【中文标题】什么是后台线程、前台线程和主线程?【英文标题】:What are background, foreground & main threads? 【发布时间】:2011-01-15 10:47:08 【问题描述】:后台线程、前台线程和主线程有什么区别? .NET 中有哪些不同类型的线程?
【问题讨论】:
【参考方案1】:后台线程(其 Thread 对象的 Background
属性设置为 true
)将
不阻止应用程序退出。
一旦所有正常(前台)线程都退出,所有正在运行的后台线程都会立即终止。 此外,如果卸载 AppDomain,则 AppDomain 中的所有后台线程都会立即中止。
ThreadPool 管理的线程是后台线程。
前台线程是普通线程。
主线程是启动程序的初始线程。 (运行Main
方法的线程)
如需了解更多信息,请参阅here。
【讨论】:
是的,有;阅读链接。默认限制为每个 CPU 250;你可以通过调用ThreadPool.SetMaxThreads
来改变它。
我可能弄错了,但我认为限制是每个核心。另一点,您的应用程序中需要这么多线程的可能性很小。你要做的就是增加线程开销。从经验来看,2/3 个内核线程似乎是一个不错的选择。【参考方案2】:
文档中简明扼要地说明了区别。程序结束时,后台线程被中断。
http://msdn.microsoft.com/en-us/library/h339syd0(VS.71).aspx
【讨论】:
【参考方案3】:后台线程就是这样,它是从应用程序的 UI 线程在后台运行的线程。类似 winforms 应用程序中的 UI 线程是负责重新绘制 UI 和其他用户交互的线程。
将长时间运行的进程移至后台线程将有助于提高可用性。这是一个很好的intro document 为你线程。
【讨论】:
以上是关于什么是后台线程、前台线程和主线程?的主要内容,如果未能解决你的问题,请参考以下文章