【发布时间】:2011-10-09 08:30:57
【问题描述】:
有谁知道是否可以检测到在托管环境中何时创建了新线程?
我想要一份我的应用程序中所有线程的列表(每个线程的 ID 和名称)。我在 Visual Studio 中使用并发可视化工具,它只显示线程 ID(而不是线程名称)。如果您有 20 多个没有名称的线程,则很难将程序流程可视化。
编辑:
使用Process.GetCurrentProcess()。线程不行,因为 CLR 不保证托管线程和非托管线程之间的一对一映射。
一种解决方案是创建某种线程管理器,所有线程创建都必须通过它来完成。它还将管理所有当前活动线程的列表。
【问题讨论】:
-
为什么? (您要解决的真正问题是什么)
-
您的
Process对象将包含所有线程的列表。这就是你所需要的吗?如果您真的想在创建新线程时收到通知,您可能必须使用调试/分析接口。 -
这需要调试器。程序无法自行调试。无论您要解决什么问题,这都不是解决问题的正确方法。
-
我已经在上面详细解释了我的问题。