gpt4 book ai didi

c# - 调试期间的线程

转载 作者:行者123 更新时间:2023-11-30 17:49:56 25 4
gpt4 key购买 nike

有人可以向我解释为什么在我的项目调试期间有这么多线程吗?

我启动我的控制台应用程序 (.net 4.5),我可以看到有以下线程:

[8064][Thread Destroyed]
[5528]<No Name>
[9048]<No Name>
[1760]<No Name>
[6836]vshost.RunParkingWindow
[10200].NET SystemEvents
[9692]Main Thread

当我运行 Parallel.For 3 次迭代时,我得到以下线程:

[0]Thread Ended
[10140]<No Name>
[4464]<No Name>
[5332]<No Name>
[6772]vshost.RunParkingWindow
[8660].NET SystemEvents
[6728]Main Thread
[8580]Worker Thread
[9332]Worker Thread
[9168]Worker Thread
[1336]<No Name>
[9464]<No Name>

我假设 3 个工作线程用于我的 Parallel.For 循环中的 3 次迭代,但是:为什么线程被销毁,为什么没有名称线程,什么是 RunParkingWindow,为什么某些线程 ID 会发生变化,例如。主线程,为什么当我运行 Parallel.For 时有 2 个额外的无名称线程?

最佳答案

您在 VIsual studio 托管进程下运行。它旨在增强您的调试体验。您列出的许多线程都来自该进程。

参见:What is the purpose of the Visual Studio Hosting Process?

要禁用此功能 - 转到 Project Properties > 在 Debug 选项卡中 > 取消选中 Enable the Visual Studio hosting Process

现在您的程序将作为自己的进程进行调试,您将看到正确的线程。一个基本的应用程序将从一个主线程、一个终结器线程和几个线程池工作线程开始。工作线程将由 CLR 线程池在它认为合适的时候创建和销毁。

关于c# - 调试期间的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com