免费多线程?

时间:2012-10-13 21:38:17

标签: c# multithreading

所以我有一个简单的控制台应用程序:

class Program
{
    static void Main(string[] args)
    {
        Console.ReadKey();
    }
}

我用发布配置构建它。当我运行它并打开任务管理器时,我看到了它 有4个主题。即使我没有创建任何线程,为什么会发生这种情况呢?

这不可能是每个应用程序。我尝试打开记事本,它只有1个线程。虽然它是一个原生应用程序,我的控制台应用程序是管理。

有什么想法吗?

4 个答案:

答案 0 :(得分:17)

我想你看到的主题是:

  1. 主线。
  2. 终结者帖子
  3. In-process debugger helper thread
  4. 并发GC线程。
  5. This post详细介绍了一些特殊的CLR线程。

答案 1 :(得分:6)

这些是为应用程序创建的.NET Framework线程,您可以使用Visual Studio 2010线程调试窗口查看哪些线程属于该问题下的应用程序。

刚创建了一个带有空main方法的基本控制台应用程序,我们可以看到创建了8个线程:

enter image description here

在此处查看有关CLR内部线程的有趣讨论:The CLR's internal threads

BTW,notepad不是.NET Framework应用程序

答案 2 :(得分:3)

.NET Framework总是在程序开头启动一些线程:

  1. 你的主线(显然)
  2. 垃圾收集线程
  3. JIT线程。

答案 3 :(得分:1)

普通COM应用程序和托管应用程序之间存在一个基本区别。这是垃圾收集。

每个进程都有一个与之关联的终结器线程,这样应用程序中的终结器只能在该线程上运行。

所以线程是: 1.主线程(您的应用程序已创建) 2.终结者线程(由垃圾收集器使用)。 3. JIT Thread(用于飞行中的JIT代码)

其他线程可以是SysEvents等。