当我尝试使用进度条显示当前的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;
谢谢!
答案 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