逐步解說:變更和擷取效能計數器值
更新:2007 年 11 月
此份逐步解說中的程序將示範如何使用 PerformanceCounter 類別 (Class) 上的方法,來使用效能計數器的值。效能計數器是 Windows 用來在各種系統資源上收集效能資料的方法;Windows 包含一組可互動的預先定義計數器並將其加以分類。您從計數器擷取的值可能是未經處理的值,也可能是隨時間變更的計算值。增加或減少計數器的目前值有幾種方法。
在逐步解說期間,您將:
建立並設定 PerformanceCounter 元件,與系統所提供的計數器進行互動。
建立 Windows 應用程式,其中包含的 UI 項目會擷取並顯示計數器的值。
撰寫使用 RawValue 屬性的程式碼,來設定並擷取計數器中的未經處理值。
撰寫使用 Increment、IncrementBy 和 M:System.Diagnostics.PerformanceCounter.Decrement 方法的程式碼,來變更計數器的值並擷取新值。
![]() |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要建立 Windows 應用程式
在 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。
在 [新增專案] 對話方塊中,建立 Visual Basic 或 Visual C# [Windows 應用程式]。將專案命名為 PerformanceCounterExample。
在 [工具箱] 的 [Windows Form] 索引標籤中,將下列控制項加入至您的應用程式:
兩個標籤
一個文字方塊
五個按鈕
在這些控制項上設定下列屬性:
控制項
屬性
值
Label1
Name
lblCounterValue
Text
(空白)
Label2
Name
lblSystemCounterValue
Text
(空白)
Textbox1
Name
txtValue
Text
(空白)
Button1
Name
btnSetRawValue
Text
設定自訂計數器的未經處理值
Button2
Name
btnGetNextValue
Text
取得系統計數器的下一個值
Button3
Name
btnIncrement
Text
自訂計數器增加 1
Button4
Name
btnDecrement
Text
自訂計數器減少 1
Button5
Name
btnIncrementBy
Text
自訂計數器增加固定值
隨意排列這些控制項。
儲存您的工作。
若要建立和設定您的 PerformanceCounter 元件
開啟 [伺服器總管] 並存取 [伺服器] 節點。如需詳細資訊,請參閱 HOW TO:存取及初始化伺服器總管/資料庫總管。
在 [伺服器] 節點下找出電腦的清單,並加以展開。您會看到效能計數器、訊息佇列、事件記錄檔和服務的項目。
展開 [效能計數器] 節點並找出 [處理器] 節點。
找出 [% Processor Time] 節點,並加以展開。
將 _Total 計數器拖曳至表單上。接著將為 PerformanceCounter 計數器設定的 _Total 元件加入至專案。這個元件在 Visual Basic 中的名稱為 PerformanceCounter1,在 Visual C# 中則為 performanceCounter1。
若要擷取系統計數器中未經處理的值
在設計工具中,按兩下 [取得系統計數器的下一個值] 按鈕,來建立 Click 事件處理常式。這個方法會報告計數器中計算過的值,而不是未經處理的值。加入下列程式碼來擷取並顯示 PerformanceCounter 執行個體 (Instance) 正在監看之計數器中的下一個值:
Private Sub btnGetNextValue_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetNextValue.Click lblSystemCounterValue.Text = _ "The current value of the system counter is: " _ & PerformanceCounter1.NextValue().ToString() End Sub
private void btnGetNextValue_Click(object sender, System.EventArgs e) { lblSystemCounterValue.Text = "The current value of the system counter is: " + performanceCounter1.NextValue().ToString(); }
在接下來的程序中,您將使用自訂分類和計數器。
若要建立自訂計數器和分類
在 [檢視] 功能表上,按一下 [設計工具],以便存取 Form1 的設計工具。
在設計工具中開啟 [伺服器總管],然後存取 [伺服器] 節點。如需詳細資訊,請參閱 HOW TO:存取及初始化伺服器總管/資料庫總管。
在 [伺服器] 節點下找出電腦的清單,並加以展開。
以滑鼠右鍵按一下 [效能計數器] 節點,然後按一下 [建立新分類]。
[效能計數器產生器] 對話方塊隨即出現。
在 [分類名稱] 中輸入 MyNewCategory。
按一下 [新增] 以加入新的計數器,並將它命名為 MyNewCounter。按一下 [確定] 來建立新的分類和計數器。
注意事項:
在這個步驟中,您需要寫入登錄的使用權限。如果您無法建立新的計數器,請與系統管理員連絡。
在 [伺服器總管] 中,瀏覽至新的計數器並將其拖曳至表單上。接著將為新計數器 MyNewCounter 設定的新 PerformanceCounter 元件加入至專案中。
注意事項:
這些步驟會在您的電腦上建立計數器。如果您要部署這個應用程式,必須在目標電腦上建立計數器。您可以將安裝程式加入至專案來進行。選取 PerformanceCounter 物件,然後在 [屬性] 視窗中按一下 [加入安裝程式](如果您無法使用這個命令,請以滑鼠右鍵按一下 [屬性] 視窗,然後按一下 [命令])。如需詳細資訊,請參閱安裝元件簡介。
若要設定自訂計數器中未經處理的值
在設計工具中,Visual Basic 請選取 PerformanceCounter2,如果是 Visual C# 則選取 performanceCounter2。
將 ReadOnly 屬性設定為 false。
按兩下 btnSetRawValue 按鈕,以便在程式碼編輯器中建立 Click 事件處理常式。
加入下列程式碼,設定您建立之計數器的未經處理值,然後在第一個標籤控制項中顯示計數器的值。
Private Sub btnSetRawValue_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSetRawValue.Click PerformanceCounter2.RawValue = CLng(txtValue.Text) lblCounterValue.Text = PerformanceCounter2.NextValue().ToString() End Sub
private void btnSetRawValue_Click(object sender, System.EventArgs e) { performanceCounter2.RawValue = long.Parse(txtValue.Text); lblCounterValue.Text = performanceCounter2.NextValue().ToString();
}
若要在自訂計數器的值增加 1 並加以顯示
在設計工具中,按兩下 [自訂計數器增加 1] 按鈕,以便在程式碼編輯器中建立 Click 事件處理常式。
加入下列程式碼,在自訂計數器中加一,然後在第一個標籤控制項中顯示計數器的值。
Private Sub btnIncrement_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnIncrement.Click PerformanceCounter2.Increment() lblCounterValue.Text = PerformanceCounter2.NextValue().ToString() End Sub
private void btnIncrement_Click(object sender, System.EventArgs e) { performanceCounter2.Increment(); lblCounterValue.Text = performanceCounter2.NextValue().ToString();
}
若要減少自訂計數器並顯示其值
在設計工具中,按兩下 [以 1 為單位減少自訂計數器] 按鈕,以便在程式碼編輯器中建立 Click 事件處理常式。
加入下列程式碼,將計數器的值減一,然後在第一個標籤控制項中顯示計數器的值。
Private Sub btnDecrement_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDecrement.Click PerformanceCounter2.Decrement() lblCounterValue.Text = PerformanceCounter2.NextValue().ToString() End Sub
private void btnDecrement_Click(object sender, System.EventArgs e) { performanceCounter2.Decrement(); lblCounterValue.Text = performanceCounter2.NextValue().ToString();
}
若要在自訂計數器中加入使用者定義的值
在設計工具中,按兩下 [自訂計數器增加固定值] 按鈕,以便在程式碼編輯器中建立 Click 事件處理常式。
加入下列程式碼,依文字方塊中輸入的值增加計數器的值,然後在第一個標籤控制項中顯示計數器的值。
Private Sub btnIncrementBy_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnIncrementBy.Click PerformanceCounter2.IncrementBy(CLng(txtValue.Text)) lblCounterValue.Text = PerformanceCounter2.NextValue().ToString() End Sub
private void btnIncrementBy_Click(object sender, System.EventArgs e) { performanceCounter2.IncrementBy(long.Parse(txtValue.Text)); lblCounterValue.Text = performanceCounter2.NextValue().ToString(); }
若要測試您的應用程式
儲存檔案。
按 F5 編譯並啟動您的應用程式。
按一下 [取得系統計數器的下一個值] 按鈕,來擷取處理器分類計數器中的目前值。因為您使用 NextValue() 方法擷取該值,所以第一個呼叫將傳回 0。
這時您應看到目前值顯示在標籤中。
在文字方塊中輸入 25,然後按一下 [設定自訂計數器的未經處理值]。
接著應會更新標籤欄位來顯示未經處理的值現在是 25。
按一下 [自訂計數器增加 1] 按鈕。
標籤中的值應增加 1。
按一下 [以 1 為單位減少自訂計數器] 按鈕。
標籤中的值應減少 1。
在文字方塊中輸入 25,接著按一下 [自訂計數器增加固定值]。
標籤中的值應增加 25。
您也可以在 Windows 效能工具中檢視您的效能計數器。
若要在 Windows 效能工具中檢視您的效能計數器。
開啟屬於 [Microsoft Management Console] 一部分的 [效能] 工具。查詢作業系統 [說明],尋找用以開啟 [效能] 工具的步驟。
以滑鼠右鍵按一下效能圖形下方的計數器清單,然後按一下 [加入計數器]。
從 [效能物件] 清單中選取 [MyNewCategory],或從計數器清單中選取 [MyNewCounter]。按一下 [加入] 以完成。
從工具列按一下 [檢視報告] 來顯示計數器的值。