什么在我的应用程序中创建新线程?

时间:2015-11-13 08:59:14

标签: c# wpf multithreading

运行简单的GUI WPF应用程序时,根本不使用async / await。我不是通过Task.Run创建任何新线程,但由于某种原因,这是Visual Studio控制台中的appreas:

The thread 0x1058 has exited with code 0 (0x0).
The thread 0x1b0c has exited with code 0 (0x0).
The thread 0x1ae4 has exited with code 0 (0x0).

这些线程是什么?谁在创造它们?如果我看到了,这意味着我调用的一些方法创建新线程,是吗?

3 个答案:

答案 0 :(得分:2)

  

这些线程是什么?谁创造了它们?

这些线程是由CLR创建的托管线程,它们用于执行代码。此外,当线程以代码0退出时,意味着没有发生错误。

  

我没有通过Task.Run

创建任何新线程

这不正确。 Task.Run使用CLR的托管线程池中的线程。它不会创建任何新线程。这是CLR在需要时做出的决定。

答案 1 :(得分:0)

this article

  

通常,WPF应用程序以两个线程开头:一个用于处理   渲染和另一个用于管理UI。渲染线程   在UI线程接收时有效地隐藏在后台   输入,处理事件,绘制屏幕并运行应用程序代码。   尽管在某些情况下,大多数应用程序使用单个UI线程   最好使用几个。我们稍后会用一个例子讨论这个问题。

答案 2 :(得分:0)

这是一个错误

您可以查看this

为避免这种情况,您可以转到

Tools -->Options-->under the "Debugging\Output Window" area-->Turn off "Thread Exit Messages" setting