如何获取活动线程数?

我有一个调用C ++库的程序。 程序进程有大量的线程(50-60)。 它们中的大多数似乎都是用C ++创建的,我怀疑大多数都是暂停/等待的。

如何在给定的时间点找到有多少这些线程处于活动状态?

要实际确定活动线程的数量,有必要检查每个线程的ThreadState属性。

 ((IEnumerable)System.Diagnostics.Process.GetCurrentProcess().Threads) .OfType() .Where(t => t.ThreadState == System.Diagnostics.ThreadState.Running) .Count(); 

您可以使用Process Explorer来检查线程。 它会实时告诉您每个CPU消耗多少CPU,并且可以为您提供单独的堆栈跟踪,这将指示它们被阻止的内容。