【问题标题】:How can I get a list of all threads in a .Net application?如何获取 .Net 应用程序中所有线程的列表?
【发布时间】:2009-12-30 08:03:06
【问题描述】:

我正在尝试解决更大的多处理问题 - 我怀疑客户端库正在创建前台线程,我正在尝试查看该理论是否正确。

为了做到这一点,我希望能够记录一个进程中所有线程的列表,它们的状态是什么,以及它们是后台还是前台。

我见过 Process.GetCurrentProcess().Threads,但它返回的是 ProcessThread 对象,而不是 System.Thread。 ProcessThread 没有 System.Thread 的所有属性。

有没有办法获取 System.Threads 的列表?

【问题讨论】:

  • 顺便说一句,Process.Threads 返回的线程是操作系统线程,而不是托管线程

标签: .net multithreading


【解决方案1】:

Sysinternal's ProcMon怎么样

正如@jvilalta 所指出的,Process Explorer 也是一个不错的选择。

【讨论】:

  • 请注意,不能保证每个 CLR 线程都会有一个单独的操作系统线程(这是 procmon 和 procexp 显示的):请参阅stackoverflow.com/questions/466632/…。所以 procmon 可能会错过一些托管线程。另请注意,操作系统线程不会有托管线程信息,如名称和前景/背景:procmon/procexp 显示的内容等同于 ProcessThread,Jeremy 说他已经考虑过并拒绝了。
【解决方案2】:

Visual Studio 本身具有查看所有活动线程的能力,或者您可以使用 DebugInspector(不确定 url,抱歉)。

来自 C#,不确定如何做到这一点。

【讨论】:

    【解决方案3】:

    您也许可以使用 Process Monitor http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx 看到这些

    【讨论】:

      猜你喜欢
      • 2011-01-04
      • 2021-07-31
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2017-02-03
      相关资源
      最近更新 更多