请参阅以下代码:
PerformanceCounter total_cpu = new PerformanceCounter("Process", "% Processor Time", "_Total");
return total_cpu.NextValue();
//returns 0
返回0
现在,请看这个:
PerformanceCounter total_cpu = new PerformanceCounter("Process", "% Processor Time", "_Total");
while (true)
{
float t = total_cpu.NextValue();
System.Threading.Thread.Sleep(1000);
return t;
//returns correct value (matched with Task Manager)
}
我希望每2秒通过WCF服务连续获取性能计数器值(例如CPU使用率),并使用ajax在asp页面上显示Result。
现在问题是正确的方法也会为自己创建一个循环。我试图通过旗帜处理它,但没有帮助。
注意:我也尝试了 WMI ,但没有返回正确的值。
谢谢
答案 0 :(得分:1)
对于许多计数器,第一个值始终为0.请参阅文档的“备注”部分中的第一个注释: http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.nextvalue.aspx
你应该做的是让计数器的静态实例在后台每两秒读一次,将数据存储在你的服务可以获得它的地方。每次请求时,您都可以返回预取值而不是每次从计数器中取出。