2013-08-02 13 views
-2

因此,我正在研究一些在一定比例下检查CPU使用情况的东西,以便它不会让系统停滞不前。我有这样的代码:性能计数器保持cpuUsage在一定的比例下C#

static PerformanceCounter cpuUsage; 

    public static void Main(string[] args) 


    { 
     cpuUsage = new PerformanceCounter("Processor", "% Processor Time", "_Total"); 


     do 
     { 

      Console.WriteLine(cpuUsage.NextValue() + " %"); 
      Thread.Sleep(1000); 

      Console.WriteLine(cpuUsage.NextValue() + " %"); 
     } 

     while (cpuUsage.NextValue() < 50.00); 

    } 

我最初的想法是用这个做while循环继续检查CPU使用率,直到它去超过50%,则停止循环。但由于某些原因,即使cpuUsage.NextValue大于50,它仍然不会退出循环。我猜这是这个值的问题。有什么建议么?

+0

此外,这些是我的输出:0% 4.6785% 0% 2.34375% 0% 4.6785% 0% 100% 0% 2.345% 任何线索为何总回报一个0之间? – trueamerican420

回答

1

我认为线索是在0%的输出 - documentation recommends你只调用NextValue每秒钟,以便它有时间获取数据,但实际上你每秒调用它3次。尝试:

float usage; 
do { 
    Thread.Sleep(TimeSpan.FromSeconds(1)); 
    usage = cpuUsage.NextValue(); 
    Console.WriteLine(usage + " %"); 
} while (usage < 50.00); 
+0

好的,我会试试看。非常感谢Rob – trueamerican420

+0

Rob代码工作得很好。只需在循环之前声明var用法,并在其中使用用法!先生,谢谢你! – trueamerican420

+0

改变了答案,以便编译,谢谢。很高兴有帮助。 –