为什么以下代码在我未在ctor中传递params时抛出错误Instance 'taskmgr' does not exist in the specified Category.
var cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% Processor Time";
cpuCounter.InstanceName = "taskmgr";
cpuCounter.NextValue();
但是,当我通过在ctor中传递params时也没有出现错误。
var cpuCounter = new PerformanceCounter(
"Processor",
"% Processor Time",
"taskmgr");
cpuCounter.NextValue();
更新: 我已尝试过每个进程名称,不仅是“taskmgr”,结果也一样!
有什么问题?
答案 0 :(得分:1)
taskmgr
类没有Processor
个实例可用,因为Processor
与您的CPU有关...
你可能意味着Process
,它按预期工作:
var cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName = "Process";
cpuCounter.CounterName = "% Processor Time";
cpuCounter.InstanceName = "taskmgr";
cpuCounter.NextValue();
答案 1 :(得分:0)
您确定为CategoryName
/ InstanceName
提供了正确的值吗?从documentation for InstanceName看起来,实例名称应该与通过性能监视器MMC管理单元提供的值匹配,该管理单元仅为我的计算机上的处理器提供_Total和整数索引,至少在提供时"Processor"
。
如果您为"Process"
提供CategoryName
,则可以查看流程。