所以我有一个足够简单的控制台应用程序:
class Program
{
static void Main(string[] args)
{
Console.ReadKey();
}
}
我已经使用发布配置构建了它。当我运行它并打开任务管理器时,我看到它有 4 个线程。即使我没有创建任何线程,为什么会发生这种情况?
这不可能是每个应用程序。我尝试打开记事本,它只有 1 个线程。虽然它是一个本机应用程序并且我的控制台应用程序是托管的。
有任何想法吗?
所以我有一个足够简单的控制台应用程序:
class Program
{
static void Main(string[] args)
{
Console.ReadKey();
}
}
我已经使用发布配置构建了它。当我运行它并打开任务管理器时,我看到它有 4 个线程。即使我没有创建任何线程,为什么会发生这种情况?
这不可能是每个应用程序。我尝试打开记事本,它只有 1 个线程。虽然它是一个本机应用程序并且我的控制台应用程序是托管的。
有任何想法吗?
这些是为应用程序创建的 .NET Framework 线程,您可以使用 Visual Studio 2010 线程调试窗口来查看问题下的应用程序属于哪些线程。
刚刚创建了一个带有空 main 方法的基本控制台应用程序,我们可以看到创建了 8 个线程:

在此处查看有关 CLR 内部线程的有趣讨论:CLR 的内部线程
顺便说一句,记事本不是 .NET Framework 应用程序
.NET Framework 总是在程序开始时启动一些线程:
普通 COM 应用程序和托管应用程序之间存在一个基本区别。这是垃圾收集器。
每个进程都有一个与之关联的终结器线程,因此应用程序中的终结器仅在该线程上运行。
所以线程是: 1. 主线程(您的应用程序已创建) 2. 终结器线程(由垃圾收集器使用。3. JIT 线程(用于即时 JIT 代码)
其他线程可以是 SysEvents 等。