簡介
本文將介紹一種簡單的方法來顯示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事件觸發時更新
From:http://tw.wingwit.com/Article/program/net/201311/13590.html