簡介
本文將介紹一種簡單的方法來顯示CPU的狀態信息,示例演示了怎樣顯示CPU消耗的處理器時間百分比,它是通過配置一個性能計數器,并用一個標準進度條控件及標簽控件周期性輪詢處理器時間百分比。
圖1:顯示CPU處理器時間
這個示例還能用于監控單臺計算機上的多個處理器,僅僅通過在運行時取得CPU數(System.Environment.PRocessorCount可返回這個值),并動態添加Performance Monitor控件,讓其各自監控一個CPU就可以了。
還可以對文中的方法進行擴展,如下面就是一個使用了Dundas .NET Gauge Control控件,并顯示了Intel迅馳雙核處理器的程序截圖,雖然在文中沒有包含這個例子,但思路都是一樣的。
圖2:在雙核系統中監控每一個處理器
開始工程
在Visual Studio 2005中新建一個WinForm(Windows窗體應用程序)工程——這個窗體用于顯示CPU信息,且解決方案沒有引用除默認之外的其他庫。圖3為解決方案資源瀏覽器中的工程:
圖3:解決方案資源瀏覽器
程序的主窗體由下列標準工具箱控件組成:
² 一個組框控件
² 一個標簽控件
² 一個進度條控件
² 一個PerformanceCounter控件
² 一個定時器控件
組框控件用于包含其他的控件;進度條控件設為顯示從0至100間的數值,步長屬性設為1;標簽控件用于顯示進度條的當前數值;而進度條則代表了PerformanceCounter控件捕捉到的處理器時間百分比;進度條與標簽控件都由定時器控件的Tick事件處理程序更新;定時器設置為每10000毫秒調用Tick事件處理程序,并且在程序初始化時就開始計時了。
PerformanceCounter控件的屬性設為捕捉處理器時間百分比,可以用代碼設置,也可以在IDE中的屬性欄里設置,在本例中,是在屬性欄里設置,如下圖所示:
圖4:Performance Counter控件屬性
上圖中,屬性CategoryName被設為“Processor”,屬性CounterName被設為“% Processor Time”,且InstanceName設為“_Total”。如果要監控單個處理器的狀態,屬性InstanceName需設為指向某個特定的處理器(比如說0或1)。
設置完這些屬性之后,還需要編寫一些代碼,下面就是程序主窗體的代碼:
以下是引用片段: using System; namespace CpuUsageTest private void Form1_Load(object sender, EventArgs e) } private void timer1_Tick(object sender, EventArgs e) |
簡單吧,在此只需添加IDE默認生成之外的很少代碼,主要是Tick事件的處理程序,在這兩行代碼中,進度條被設為顯示從性能計數器得來的值,標簽控件由傳遞給進度條的值更新,而這兩個值都在每次Tick事件觸發時更新。
|
新聞熱點
疑難解答