c# - 如何使用性能计数器获取进程正在运行的线程数?

标签 c# .net performancecounter

根据以下代码,我可以获得给定进程的事件线程总数:

using (var p = Process.GetCurrentProcess())
{
    Console.WriteLine(p.Threads.Count);     
}

我想使用PerformanceCounters来实现这一点,并且到目前为止已经尝试过(引用:https://msdn.microsoft.com/en-us/library/w8f5kw2e(v=vs.110).aspx):

var category = ".NET CLR LocksAndThreads";
var counterOne = "# of current logical Threads";
var counterTwo = "# of current physical Threads";
var coutnerThree = "# of current recognized threads";
var counterFour = "# of total recognized Threads";

var perfCounter = new PerformanceCounter(
    category,
    counterOne,
    "myProcess") { ReadOnly = true };
Console.WriteLine("Thread count: ", perfCounter.NextValue());

我无法匹配Process返回的号码。非常感谢任何帮助。

最佳答案

Process.Threads 将包含所有线程,包括 native 操作系统线程。 .NET 性能计数器仅返回托管线程。与 Process.Threads 匹配的性能计数器将为 \\Process(myProcess)\Thread Count

关于c# - 如何使用性能计数器获取进程正在运行的线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37793023/

相关文章:

c# - 强制派生类实现接口(interface)

c# - Azure - 错误订阅未注册以使用命名空间 'microsoft.insights'

c# - 来自sql查询执行 Entity Framework 的匿名类型结果

c# - 如何将 [CallerLineNumber] 的参数强制为只读?

javascript - 在 typescript 中创建javascript文件的对象

c++ - 通过 WMI 访问应用程序的自定义性能计数器

c# - 如何使 CloudConfigurationManager.GetSetting 更简洁?

c# - 测量 "% Time spent in GC"

C#:访问 ".NET CLR Memory category"的 PerformanceCounters

c# - 处置面板相当于处置其子项加上自身吗?