用于前景和后台线程的用例

时间:2015-05-02 09:11:14

标签: c# multithreading

在C#Threading中,默认情况下新线程是前台线程。

但是后台线程的用例是什么?

此外,主线程运行的是什么 - >在前台或后台线程?

1 个答案:

答案 0 :(得分:3)

根据MSDN,前景线程和后台线程之间的主要区别是:

  

后台线程与前台线程相同   异常:后台线程不保留托管执行   环境运行。一旦所有前台线程都停止了   一个托管进程(.exe文件是托管程序集),   系统停止所有后台线程并关闭。

因此,后台线程的用例是不应阻止进程终止的任务。

  

如果使用线程来监视活动,例如套接字   连接,将其IsBackground属性设置为true以便该线程   不会阻止您的流程终止。

考虑到差异,UI线程应该是前台,以便在UI关闭之前保持进程运行。如果它是后台线程,则只要没有其他前台线程正在运行,该进程就会停止运行。

修改

由于您可以在进程终止时向前台线程发出信号,因此我没有看到任何仅使用前台线程无法实现的特殊用例。由于这些线程可能需要被告知有关终止免费资源或执行操作,因此手动发信号通知它们(而不是依赖于因为有背景而终止它们的事实)可能是更好的选择。但是将它们作为背景将是一个"以防万一"事情,如果由于某种原因他们没有发出信号,他们不会阻止进程终止。