所以我有一个简单的控制台应用程序:
class Program
{
static void Main(string[] args)
{
Console.ReadKey();
}
}
我用发布配置构建它。当我运行它并打开任务管理器时,我看到了它 有4个主题。即使我没有创建任何线程,为什么会发生这种情况呢?
这不可能是每个应用程序。我尝试打开记事本,它只有1个线程。虽然它是一个原生应用程序,我的控制台应用程序是管理。
有什么想法吗?
答案 0 :(得分:17)
我想你看到的主题是:
This post详细介绍了一些特殊的CLR线程。
答案 1 :(得分:6)
这些是为应用程序创建的.NET Framework线程,您可以使用Visual Studio 2010线程调试窗口查看哪些线程属于该问题下的应用程序。
刚创建了一个带有空main方法的基本控制台应用程序,我们可以看到创建了8个线程:
在此处查看有关CLR内部线程的有趣讨论:The CLR's internal threads
BTW,notepad不是.NET Framework应用程序
答案 2 :(得分:3)
.NET Framework总是在程序开头启动一些线程:
答案 3 :(得分:1)
普通COM应用程序和托管应用程序之间存在一个基本区别。这是垃圾收集。
每个进程都有一个与之关联的终结器线程,这样应用程序中的终结器只能在该线程上运行。
所以线程是: 1.主线程(您的应用程序已创建) 2.终结者线程(由垃圾收集器使用)。 3. JIT Thread(用于飞行中的JIT代码)
其他线程可以是SysEvents等。