1

Instance 'taskmgr' does not exist in the specified Category.为什么当我没有在 ctor 中传递参数时以下代码会引发错误

var cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% Processor Time";            
cpuCounter.InstanceName = "taskmgr";
cpuCounter.NextValue();

但是,当我通过在 ctor 中传递参数来做同样的事情时,不会引发错误。

var cpuCounter = new PerformanceCounter(
    "Processor",
    "% Processor Time",
    "taskmgr");
cpuCounter.NextValue();

更新: 我已经尝试过每个进程名称,不仅是“taskmgr”而且结果是一样的!

问题是什么?

4

2 回答 2

1

该类别没有taskmgr可用的实例,因为与您的 CPU 相关...ProcessorProcessor

您可能的意思是Process,它按预期工作:

var cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName = "Process";
cpuCounter.CounterName = "% Processor Time";            
cpuCounter.InstanceName = "taskmgr";
cpuCounter.NextValue();
于 2012-03-05T16:29:17.203 回答
0

您确定为CategoryName/提供正确的值InstanceName吗?从InstanceName 的文档看来,实例名称应该与通过性能监视器 MMC 管理单元提供的值匹配,该管理单元仅提供 _Total 和我机器上处理器的整数索引,至少在提供"Processor".

如果你提供"Process"CategoryName允许查看一个过程。

于 2012-03-05T16:28:47.353 回答