2009-12-29 82 views
3

我想解决一个更大的多处理问题 - 我怀疑一个客户端库正在创建一个前台线程,并且我试图看看这个理论是否正确。如何获得.Net应用程序中所有线程的列表?

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

我见过Process.GetCurrentProcess()。线程,但它返回一个ProcessThread对象,而不是System.Thread。 ProcessThread不具有System.Thread所具有的所有属性。

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

+0

BTW,由Process.Threads返回线程操作系统线程,而不是管理线程 – 2009-12-30 01:39:16

回答

3

如何使用Sysinternal's ProcMon

由于@jvilalta指出,Process Explorer也是一个不错的选择。

+1

或者他们的Process Explorer ... – jvilalta 2009-12-30 00:01:06

+1

或过程黑客http://processhacker.sourceforge.net – KingRadical 2009-12-30 00:06:18

+1

注意,它不能保证会有一个单独的操作系统线程(procmon和procexp显示)为每个CLR线程:请参阅http://stackoverflow.com/questions/466632/how-can-i-get-managed-threads-from-process-getcurrentprocess-threads。所以procmon可能会错过一些托管线程。还要注意操作系统线程不会有像名称和前台/后台这样的托管线程信息:procmon/procexp show与ProcessThread相当,Jeremy说他已经考虑并拒绝了。 – itowlson 2009-12-30 00:07:54

2

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

从C#,不知道如何做到这一点。

相关问题