如何将性能计数器的输出转换为c#中的int

时间:2011-04-25 10:12:29

标签: c# performance int counter

当我尝试使用进度条显示当前的CPU和内存使用情况时出错。代码似乎是正确的,因为它适用于标签,但我收到错误“无法转换为int”,那么如何将性能计数器的数据转换为int,以便它可以显示在进度条中?我尝试使用System.Convert.ToInt32(cpuCounter);,但它对我没用。这是我的代码:

PerformanceCounter ramCounter;
        ramCounter = new PerformanceCounter("Memory", "Available MBytes");
        ramCounter.NextValue();
        progressBar1.Value = ramCounter;

        PerformanceCounter cpuCounter;
        cpuCounter = new PerformanceCounter();
        cpuCounter.CategoryName = "Processor";
        cpuCounter.CounterName = "% Processor Time";
        cpuCounter.InstanceName = "_Total";
        cpuCounter.NextValue();
        progressBar2.Value = cpuCounter;

谢谢!

2 个答案:

答案 0 :(得分:2)

您需要PerformanceCounter.NextValue()结果 - 您当前忽略它:

float value = cpuCounter.NextValue();
progressBar2.Value = (int) value;

您当然希望检查预期值的范围 - 您可能希望对其进行缩放。

另一种选择是使用RawValue属性,即long

答案 1 :(得分:0)

您不应将Performance Counter实例分配给进度条,而应将其值分配给进度条。值本身就是Int64。

progressbar1.Value = (Int32) ramCounter.RawValue;

此致,   Alois Kraus