WPF 应用程序中使用哪些线程?

Igo*_*pov 5 c# wpf multithreading threadpool

我希望了解各种类型应用程序中的线程使用情况,但令我有点惊讶的是, WPF 应用程序还有 2 个我没有预料到的线程(除了 UI 线程)。

我按照以下步骤操作:

  1. 创建新的 WPF 应用程序
  2. F5以在调试模式下启动它
  3. Debug -> Windows -> Parallel Stacks
  4. 按下Break All按钮
  5. 调查Parallel Stacks窗户

我原本希望得到一个线程 - UI 线程,但得到了 3 个线程:

WPF 默认线程

最左边的线程是 UI 线程 - 我一直期望它,但是其他 2 个线程是用来做什么的?我没有创建它们 - 我只是制作了一个准系统 WPF 应用程序 - 没有对新项目向导生成的初始代码进行任何修改。

另外,如何使用上面屏幕截图中红色箭头指示的功能:

  1. ProtocolHandler.SendThread
  2. ProtocolHandler.ReadThread

我查找了文档,但没有找到有关这些的太多信息。我也尝试在后面的代码中使用它们,但没有添加 using 语句 - 它们只是无法识别。

Kev*_*sse 5

该类的完整命名空间ProtocolHandlerMicrosoft.VisualStudio.DesignTools.WpfTap.Networking. 顾名思义,它由 Visual Studio 中的设计调试工具使用(可能是允许在运行时检查/修改 UI 的工具)。

如果您在 Visual Studio 中禁用这些工具(工具 -> 选项 -> 调试 -> 取消选中“启用 XAML 的 UI 调试工具”),您将看到这两个额外的线程将不再启动。