简单的 C# WinForm 应用显示在 visual studio 中有 3 个线程。任务管理器显示 14-16 个线程。为什么?

Simple C# WinForm app shows to have 3 threads in visual studio. Task Manger show 14-16 threads. Why?

我正在用 C# 创建一个非常简单的 WinForm 应用程序。只有形式。没有其他代码。当我按下暂停并查看 Visual Studio 中的线程 window 时,我看到了 3 个线程。 1 个主线程和 2 个工作线程(用于可能是 GC 或 JIT)

当我在应用程序处于 运行 时打开任务管理器时,我看到该应用程序有 14-16 个线程。我不明白是什么在创建这些其他线程。有人可以帮忙吗?

出于多种原因,WinForms 应用程序中可能存在额外的工作线程,包括:

  • 短暂使用并等待额外工作的线程池线程(如果没有任何反应,线程池最终会杀死它们)
  • GDI+/DDE 通常会创建后台线程
  • CLR 终结器线程

很可能您看到的大多数讨论帖都是第一种。

提示:如果您想在 Visual Studio 调试器的线程面板中看到这些线程,请确保您的项目配置为 "Enable native code debugging"(在项目设置中的调试选项卡)。