前景和背景线程

时间:2016-11-08 13:44:59

标签: c# multithreading

我是Stack Overflow的新手。看了很多东西,但今天报名参加。刚刚开始了一个多线程课程。

我无法理解何时使用前台和后台线程。我对线程有点新意。它们之间有什么优缺点?当我设置属性时我应该考虑什么?

对我而言,使用后台似乎很方便,因为这意味着我不必在关闭应用程序时处理线程,对吧?我的老师告诉我,大部分时间使用前景线程,但没有解释为什么以我至少理解的方式。

我可以获得关于何时使用前台线程以及何时使用后台线程的任何好例子?

我看到C#标准库默认情况下将Thread类构造函数创建的线程设置为foreground。虽然ThreadPool是默认背景。这是什么原因?他们为什么这样写图书馆? (我知道属性可以更改,我只想知道为什么默认情况下这样做。)

1 个答案:

答案 0 :(得分:0)

我不是.Net专家,但这里是关于背景属性的official documentation

  

后台线程与前台线程相同,但后台线程不会阻止进程终止。一旦属于进程的所有前台线程终止,公共语言运行库就结束该进程。任何剩余的后台线程都会停止并且不会完成。

对于线程池的情况,我们可以假设线程池只管理子系统"活动"和其他"主要" (前景)线程生活在管理更高层次(即系统)"活动"。当系统级线程存在时,它会阻止进程停止。虽然线程池任务通常不足以强制进程生存。