简介
本文将介绍一种简单的方法来显示CPU的状态信息示例演示了怎样显示CPU消耗的处理器时间百分比它是通过配置一个性能计数器并用一个标准进度条控件及标签控件周期性轮询处理器时间的百分比
图
显示CPU处理器时间
这个示例还能用于监控单台计算机上的多个处理器仅仅通过在运行时取得CPU数(SystemEnvironmentProcessorCount可返回这个值)并动态添加Performance Monitor控件让其各自监控一个CPU就可以了
还可以对文中的方法进行扩展如下面就是一个使用了Dundas NET Gauge Control控件并显示了Intel迅驰双核处理器的程序截图虽然在文中没有包含这个例子但思路都是一样的
图
在双核系统中监控每一个处理器
开始工程
在Visual Studio 中新建一个WinForm(Windows窗体应用程序)工程——这个窗体用于显示CPU信息且解决方案没有引用除默认之外的其他库图为解决方案资源浏览器中的工程
图
解决方案资源浏览器
程序的主窗体由下列标准工具箱控件组成
◆一个组框控件
◆一个标签控件
◆一个进度条控件
◆一个PerformanceCounter控件
◆一个定时器控件
组框控件用于包含其他的控件进度条控件设为显示从至间的数值步长属性设为标签控件用于显示进度条的当前数值而进度条则代表了PerformanceCounter控件捕捉到的处理器时间百分比进度条与标签控件都由定时器控件的Tick事件处理程序更新定时器设置为每毫秒调用Tick事件处理程序并且在程序初始化时就开始计时了
PerformanceCounter控件的属性设为捕捉处理器时间百分比可以用代码设置也可以在IDE中的属性栏里设置在本例中是在属性栏里设置如下图所示
图Performance Counter控件属性
上图中属性CategoryName被设为Processor属性CounterName被设为% Processor Time且InstanceName设为_Total如果要监控单个处理器的状态属性InstanceName需设为指向某个特定的处理器(比如说或)
设置完这些属性之后还需要编写一些代码下面就是程序主窗体的代码
using System;
using SystemCollectionsGeneric;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemText;
using SystemWindowsForms;
namespace CpuUsageTest
{
public partial class frmCpuUsage : Form
{
public frmCpuUsage()
{
InitializeComponent();
}
private void Form_Load(object sender EventArgs e)
{
}
private void timer_Tick(object sender EventArgs e)
{
progressBarValue = (int)(performanceCounterNextValue());
labelText = Processor Time: +
progressBarValueToString() + %;
}
}
}
简单吧!在此只需添加IDE默认生成之外的很少代码主要是Tick事件的处理程序在这两行代码中进度条被设为显示从性能计数器得来的值标签控件由传递给进度条的值更新而这两个值都在每次Tick事件触发时更新