Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)aaa
published in(发表于) 2013/12/17 8:03:03
用C#程序监控并显示CPU状态信息_.net资料_编程技术

用C#程序监控并显示CPU状态信息_.net资料_编程技术-你的首页-uuhomepage.com

用C#监控并显示CPU状态信息


  简介


  本文将介绍一种简单的方法来显示CPU的状态信息,示例演示了怎样显示CPU消耗的处理器时间百分比,它是通过配置一个性能计数器,并用一个标准进度条控件及标签控件周期性轮询处理器时间百分比。


  图1:显示CPU处理器时间


用C#程序监控并显示CPU状态信息


  这个示例还能用于监控单台计算机上的多个处理器,仅仅通过在运行时取得CPU数(System.Environment.ProcessorCount可返回这个值),并动态添加Performance Monitor控件,让其各自监控一个CPU就可以了。


  还可以对文中的方法进行扩展,如下面就是一个使用了Dundas .NET Gauge Control控件,并显示了Intel迅驰双核处理器的程序截图,虽然在文中没有包含这个例子,但思路都是一样的。


  图2:在双核系统中监控每一个处理器


用C#程序监控并显示CPU状态信息


  开始工程


  在Visual Studio 2005中新建一个WinForm(Windows窗体应用程序)工程——这个窗体用于显示CPU信息,且解决方案没有引用除默认之外的其他库。图3为解决方案资源浏览器中的工程:


  图3:解决方案资源浏览器


用C#程序监控并显示CPU状态信息


  程序的主窗体由下列标准工具箱控件组成:


  ² 一个组框控件


  ² 一个标签控件


  ² 一个进度条控件


  ² 一个PerformanceCounter控件


  ² 一个定时器控件


  组框控件用于包含其他的控件;进度条控件设为显示从0至100间的数值,步长属性设为1;标签控件用于显示进度条的当前数值;而进度条则代表了PerformanceCounter控件捕捉到的处理器时间百分比;进度条与标签控件都由定时器控件的Tick事件处理程序更新;定时器设置为每10000毫秒调用Tick事件处理程序,并且在程序初始化时就开始计时了。


  PerformanceCounter控件的属性设为捕捉处理器时间百分比,可以用代码设置,也可以在IDE中的属性栏里设置,在本例中,是在属性栏里设置,如下图所示:


  图4:Performance Counter控件属性


用C#程序监控并显示CPU状态信息


  上图中,属性CategoryName被设为“Processor”,属性CounterName被设为“% Processor Time”,且InstanceName设为“_Total”。如果要监控单个处理器的状态,属性InstanceName需设为指向某个特定的处理器(比如说0或1)。


  设置完这些属性之后,还需要编写一些代码,下面就是程序主窗体的代码:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace CpuUsageTest
{
public partial class frmCpuUsage : Form
{
public frmCpuUsage()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Value = (int)(performanceCounter1.NextValue());
label1.Text = "Processor Time: " +
progressBar1.Value.ToString() + "%";
}
}
}


  简单吧,在此只需添加IDE默认生成之外的很少代码,主要是Tick事件的处理程序,在这两行代码中,进度条被设为显示从性能计数器得来的值,标签控件由传递给进度条的值更新,而这两个值都在每次Tick事件触发时更新。





If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759