使用线程有以下三方面原因

1 可以使用线程将代码同其他代码隔离

这将提高应用程序的可靠性。如果你的应用支持加载第三方的组件,那么应用程序对于健壮性的要求就会提高,使用线程将有助于满足这个需求。

比如第三方组件出错、或是崩溃后可以不影响自己的应用程序,同时,还可以再次利用线程来使用第三方组件。

2可以使用线程来简化编码

通常,要引入线程时,引入的是要相互协作的代码,他们可能要去线程同步构造知道另一个线程什么时候终止。有时候,使用一个任务自己的线程来执行该任务,会使得编码简单。

比如对于一个tcp通信任务而言,该任务使用单独的线程来执行网络交互,隔离其他逻辑会让编码变得简单很多,同时也会提高性能

3可以用线程实现并发执行

如果应用在多CPU机器上运行,那么让多个任务同时执行,就能提高性能

前台和后台线程

CLR将每个线程要么视为前台线程,要么视为后天线程。一个应用的所有前台线程停止运行时,CLR会强制终止仍在运行的任何后台线程。这些线程被直接终止,不会抛出异常。

因此前台线程用来完成确实想完成的任务,比如,将内存数据Flush到磁盘,另外为非关键性任务使用后台线程。每个APPDomain都可以运行一个单独的应用程序。

在一个线程的生命周期中,随时可以进行前后台的切换,应用程序的主线程和构造一个Thread对象显示创建的都为前台线程。线程池默认为后台线程,由进入托管环境的本地代码创建的任何线程都被标记为后台线程