运行简单的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).
这些线程是什么?谁在创造它们?如果我看到了,这意味着我调用的一些方法创建新线程,是吗?
答案 0 :(得分:2)
这些线程是什么?谁创造了它们?
这些线程是由CLR创建的托管线程,它们用于执行代码。此外,当线程以代码0退出时,意味着没有发生错误。
我没有通过Task.Run
创建任何新线程
这不正确。 Task.Run
使用CLR的托管线程池中的线程。它不会创建任何新线程。这是CLR在需要时做出的决定。
答案 1 :(得分:0)
通常,WPF应用程序以两个线程开头:一个用于处理 渲染和另一个用于管理UI。渲染线程 在UI线程接收时有效地隐藏在后台 输入,处理事件,绘制屏幕并运行应用程序代码。 尽管在某些情况下,大多数应用程序使用单个UI线程 最好使用几个。我们稍后会用一个例子讨论这个问题。
答案 2 :(得分:0)
这是一个错误
您可以查看this
为避免这种情况,您可以转到
Tools -->Options-->under the "Debugging\Output Window" area-->Turn off "Thread Exit Messages" setting