性能计数器的值很奇怪

何俊

我使用以下代码来确定计算机的总 CPU 使用率。

private int getCPUUsage()
{
    PerformanceCounter cnt = new PerformanceCounter("Processor", "% Processor Time", "_Total");
    return (int)cnt.NextValue();
}

但是,任务管理器的CPU使用率在20%左右,但是函数的输出值大多是0,有时是100。
奇怪的是,当我在函数中间放一个MessageBox时,MessageBox的值是错误的,但返回值是正确的。

private int getCPUUsage()
{
    PerformanceCounter cnt = new PerformanceCounter("Processor", "% Processor Time", "_Total");
    MessageBox.Show(cnt.NextValue().ToString()); //Just 0
    return (int)cnt.NextValue(); //Right Value
}

所以我运行了cnt.NextValue()两次而不是MessageBox,但结果与原始代码相同。
如何PerformanceCounter正常获取的 CPU 使用率?

瑞安

第一个值将始终为 0,因为没有什么可比较的。

您必须多次运行它才能进行比较。MSDN

如果计数器的计算值取决于两次计数器读取,则第一次读取操作返回 0.0。重置性能计数器属性以指定不同的计数器相当于创建一个新的性能计数器,使用新属性的第一次读取操作返回 0.0。建议在调用 NextValue 方法之间的延迟时间为一秒,以允许计数器执行下一次增量读取。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PowerShell设置性能计数器值

来自分类Dev

ASP.NET性能计数器值

来自分类Dev

SignalR消息计数性能计数器

来自分类Dev

奇怪的Python计数器问题

来自分类Dev

Windows性能计数器的实现细节

来自分类Dev

.NET CLR性能计数器丢失

来自分类Dev

DRAM访问性能计数器

来自分类Dev

性能计数器路径无效

来自分类Dev

卤化物的性能计数器?

来自分类Dev

DRAM访问性能计数器

来自分类Dev

性能计数器路径无效

来自分类Dev

重置计数器值

来自分类Dev

更新统计计数器或仅计数(*)-性能

来自分类Dev

比较器java中计数器变量的奇怪输出

来自分类Dev

PowerShell SQL Server处理器性能计数器

来自分类Dev

保存性能监视器计数器吗?

来自分类Dev

如何选择以Get-计数器性能计数器所用的名字*

来自分类Dev

性能计数器NextValue()非常慢(1,000多个计数器)

来自分类Dev

计数器功能设定值

来自分类Dev

特定值php计数器

来自分类Dev

if (计数器 == < 数据库值 >)

来自分类Dev

Python 计数器和值

来自分类Dev

整数为0的ref计数器的奇怪行为

来自分类Dev

多处理计数器的输出很奇怪,使用锁

来自分类Dev

Linux模块:性能计数器不起作用

来自分类Dev

如何使用性能计数器控制从文件读取?

来自分类Dev

.NET 4.0 MemoryCache性能计数器在哪里?

来自分类Dev

如何在C#中检查性能计数器?

来自分类Dev

性能磁盘读取/写入时间计数器