使用PerformanceCounter实现CPU使用率图表可视化遇参数异常求助
解决CPU使用率折线图的类型错误问题
嘿,这个问题我太清楚了!你碰到的ArgumentException,根源是直接把PerformanceCounter对象传给了AddY()方法——但Chart控件的这个方法只接受错误提示里列出的类型(比如Double、int这些),完全不认识整个PerformanceCounter实例。
修正后的代码示例
// 初始化CPU使用率计数器 PerformanceCounter CPUCounter = new PerformanceCounter("Processor Information", "% Processor Time", "_Total"); // 重要提示:第一次调用NextValue()通常会返回0,建议先调用一次丢弃初始值 CPUCounter.NextValue(); // 短暂等待让计数器收集有效数据 System.Threading.Thread.Sleep(100); // 获取当前CPU使用率的double数值,再添加到图表系列中 double currentCpuUsage = CPUCounter.NextValue(); chart1.Series["Usage %"].Points.AddY(currentCpuUsage);
额外实用建议
- 如果要做实时更新的折线图,建议用
System.Windows.Forms.Timer(WinForms场景)或者合适的定时器组件,每隔几百毫秒调用一次NextValue()并添加新的数据点,同时可以限制图表显示的点数(比如只保留最近50个),避免图表数据过多导致卡顿。 - 程序退出或者不再需要计数器时,记得调用
CPUCounter.Dispose()释放系统资源,防止内存泄漏。
其实错误提示已经把问题说得很明白了:Series的数据点不支持
System.Diagnostics.PerformanceCounter类型,只接受指定的数值/字符串等类型——核心就是把计数器转换成它的数值再传入就好啦。
内容的提问来源于stack exchange,提问作者MizzyMonMit
相关产品推荐
相关产品推荐

