我正在使用流动的代码,但它说该类别不存在.
static PerformanceCounter cpuUsage;
public static void Main(string[] args)
{
cpuUsage = new PerformanceCounter("Processor", "% Processor Time", "_Total");
Console.WriteLine(cpuUsage.NextValue() + " %");
Thread.Sleep(1000);
Console.WriteLine(cpuUsage.NextValue() + " %");
Console.Read();
}
Run Code Online (Sandbox Code Playgroud)
小智 14
下午好!
此问题的核心原因是指向注册表中性能计数器的指针看似随机损坏.这种情况很少发生,但最常发生在Windows Server 2008 R2上.
严格来说,"处理"和"处理器"类别应始终默认存在为性能计数器.如果它们丢失了,可能还有许多其他计数器也丢失了.如果"处理器信息"计数器也被破坏,之前的解决方案将无法解决问题.要明确解决此问题,您可以运行以下命令:
lodctr /R
Run Code Online (Sandbox Code Playgroud)
这将修复你的计数器的任何破碎的指针.要验证此解决方案,您可以转到服务器管理器 - >监控 - >性能监视器 - >添加...在此视图中,您可以查看所有当前已注册的性能计数器."处理器"和"处理"现在都应该可用.或者,您也可以运行以下命令来查看所有可用计数器的状态:
lodctr /Q
Run Code Online (Sandbox Code Playgroud)
另请注意,此命令应从管理控制台运行; 否则此过程可能会失败,并显示"错误代码:5(拒绝访问)"
使用
new PerformanceCounter("Processor Information", "% Processor Time", "_Total");
Run Code Online (Sandbox Code Playgroud)
代替
new PerformanceCounter("Processor", "% Processor Time", "_Total");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4952 次 |
| 最近记录: |