是否可以枚举C#中的所有托管线程?当您在调试时遇到断点时,Visual Studio似乎能够执行此操作。在“线程”窗口中,它显示所有正在运行的线程的列表,包括托管名称。有谁知道它是怎么做到的?
答案 0 :(得分:6)
调试器往往能够做“正常”代码不能做的事情。如果使用分析/调试API,您可能会发现可以这样做,但我不相信您可以从“普通”.NET代码中执行此操作。
答案 1 :(得分:5)
这听起来像是“How to enumerate threads in .NET using the Name property?”的副本 - 如果是这样,简短的回答是“自己跟踪自己的主题” - 即List<Thread>
或类似内容。
答案 2 :(得分:2)
MSE通过快速附加到a来工作 堆栈跟踪时的进程 请求和分离第二个 已检索到堆栈跟踪。 这样干扰了 这个过程的正常运作是 最小化。
不幸的是,这意味着已经由外部流程完成。
答案 3 :(得分:0)
您可以通过向 ProcInsp 发出 HTTP GET 请求来枚举线程。 ProcInsp 允许您使用 CLR 进程的堆栈跟踪(在其 UI 中或作为 JSON 消息)获取线程。 Web API 可在 /Process/%PID%/Threads
获得。
免责声明:我是此工具的开发者。它已获得 MIT 许可,可免费使用。