2 回答
TA贡献1784条经验 获得超7个赞
我喜欢杰夫的解决方案,但对我来说,我想要一个平均值。获得 CPU 使用率的几个问题似乎应该有一个简单的程序包可以解决,但我没有看到。
第一个当然是第一个请求的值 0 是无用的。既然您已经知道第一个响应是 0,那么为什么函数不考虑这一点并返回 true .NextValue()?
第二个问题是,当试图决定你的应用程序可能有哪些资源可用时,瞬时读数可能非常不准确,因为它可能会出现峰值,或在峰值之间。
我的解决方案是做一个 for 循环,循环并为您提供过去几秒钟的平均值。您可以调整计数器以使其更短或更长(只要它大于 2)。
public static float ProcessorUtilization;
public static float GetAverageCPU()
{
PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName);
for (int i = 0; i < 11; ++i)
{
ProcessorUtilization += (cpuCounter.NextValue() / Environment.ProcessorCount);
}
// Remember the first value is 0, so we don't want to average that in.
Console.Writeline(ProcessorUtilization / 10);
return ProcessorUtilization / 10;
}
- 2 回答
- 0 关注
- 201 浏览
添加回答
举报