【问题标题】:What are background, foreground & main threads?什么是后台线程、前台线程和主线程?
【发布时间】:2011-01-15 10:47:08
【问题描述】:

后台线程、前台线程和主线程有什么区别? .NET 中有哪些不同类型的线程?

【问题讨论】:

    标签: .net multithreading background main foreground


    【解决方案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 为你线程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-19
        • 1970-01-01
        相关资源
        最近更新 更多