C# &引用;“你好,世界”;应用程序在.NET4.0中使用4个线程,但在.NET2.0中使用3个线程

C# &引用;“你好,世界”;应用程序在.NET4.0中使用4个线程,但在.NET2.0中使用3个线程,c#,.net,multithreading,.net-4.0,C#,.net,Multithreading,.net 4.0,运行为.NET2.0编译的最基本的“Hello,World!”应用程序时,您应该会看到3个线程(Main、GC和Finalizer)。然而,对于.NET4.0版本,在相同的基本应用程序中,这个数字会上升到4。有人知道额外线程的用途吗?线程池默认情况下保持空闲线程,因为.NET4(as)。 我找不到它们的编号是如何指定的(尽管可以使用SetMinThreads进行更改),但可能不是 本文认为,这还取决于机器上的内核数量(这是有道理的) 您可以在您的计算机/特定程序上进行测试,以使用两个CLR打印T

运行为.NET2.0编译的最基本的“Hello,World!”应用程序时,您应该会看到3个线程(Main、GC和Finalizer)。然而,对于.NET4.0版本,在相同的基本应用程序中,这个数字会上升到4。有人知道额外线程的用途吗?

线程池默认情况下保持空闲线程,因为.NET4(as)。 我找不到它们的编号是如何指定的(尽管可以使用SetMinThreads进行更改),但可能不是

本文认为,这还取决于机器上的内核数量(这是有道理的)


您可以在您的计算机/特定程序上进行测试,以使用两个CLR打印ThreadPool.GetMinThreads()。

应用程序运行在什么上?IIS、Cassini等?它是什么类型的应用程序?控制台一个?如果我创建一个简单的控制台应用程序,在
main
中使用一个
console.ReadLine()
,并对其进行调试,我会看到7个线程。您需要创建一个简短但完整的演练,以便其他人可以看到您所看到的内容(或允许您自己计算差异)@user1226346-我将尝试复制此内容-但请编辑您的问题以包含此信息。好的,我终于能够复制此内容(现在我知道我在寻找线程数,而不是详细信息)。我现在面临一个更困难的问题——记录操作系统线程——无法保证操作系统线程与托管线程的对比。而且我们处于托管运行时——为什么我们要关心它是如何实现的?