我希望用c#获取我的系统的cpu使用率。我读到了必须调用方法NextValue()
,然后等待大约一秒钟再次调用NextValue()
方法。
为了不延迟我的UI线程,我想以异步方式实现,因此编写了以下代码:
public Task<float> GetCpuPerformanceAsync()
{
return Task.Run(() =>
{
CpuPerformance.NextValue();
Task.Delay(1000);
return CpuPerformance.NextValue();
});
}
这是
CpuPerformance
的声明。CpuPerformance = new PerformanceCounter("Processor Information", "% Processor Time", "_Total");
在第一次调用上述异步方法时,它会返回实际的CPU使用情况,但是在几秒钟后再次调用它时,它只显示0或100,这与任务管理器中显示的使用情况不一致。请问有人能帮我解决这个问题吗?
await Task.Delay(1000)
... - FildorTask.Delay
的调用,因此它实际上不会等待任何时间。您可能想要使用public async Task<float> GetCpuPerformanceAsync() { CpuPerformance.NextValue(); await Task.Delay(1000); return CpuPerformance.NextValue(); }
。话虽如此,我不确定调用NextValue()
,然后丢弃结果,等待一段时间,再次调用它是否会给您带来任何好处。 - canton7