1 簡單介紹 表示 Windows NT 性能計數器組件 命名空間:System.Diagnostics 程序集:System(在 system.dll 中) 2 構造函數(只介紹本文要用到的) PerformanceCounter (String, String, String) 功能: 初始化 PerformanceCounter 類的新的只讀實例, 并將其與本地計算機上指定的系統性能計數器或自定義性能計數器及類別實例關聯 參數說明: public PerformanceCounter ( string categoryName, string counterName, string instanceName ) categoryName 性能計數器關聯的性能計數器類別(性能對象)的名稱。 counterName 性能計數器的名稱。 instanceName 性能計數器類別實例的名稱,或者為空字符串 (“”)(如果該類別包含單個實例)。
需要引用命名空間
using System.Diagnostics;using System.Threading;using System.Collections;1 獲取性能計數器類別列表 PerformanceCounterCategory 實例的 CategoryName 屬性顯示在“性能查看器”應用程序的“添加計數器”對話框的“性能對象”字段中。 PerformanceCounterCategory 類提供幾種用于與計算機上的計數器和類別交互的方法。Create 方法使您能夠定義自定義類別。Delete 方法提供從計算機移除類別的方法。GetCategories 方法使您能夠查看類別的列表,而 ReadCategory 則檢索與單個類別關聯的所有計數器和實例數據。 性能計數器發布有關應用程序的性能數據。類別包括物理組件(如處理器、磁盤和內存)和系統對象(如進程和線程)。與同一性能對象相關的系統計數器歸入一個指示其共同點的類別。當創建 PerformanceCounter 類的實例時,首先指示該組件將與之交互的類別,然后從該類別中選擇一個計數器。 例如,一個 Windows 計數器類別屬于“Memory”(內存)類別。此類別內的系統計數器跟蹤內存數據,如可用字節數和緩存的字節數。如果要在應用程序中使用緩存的字節,則應創建 PerformanceCounter 組件的實例,將其連接到“Memory”(內存)類別,然后從該類別中選取相應的計數器(在這種情況下,選取“Cached Bytes”(緩存字節))。 雖然系統中有很多可用的計數器類別,但與之交互最頻繁的可能是“Cache”(緩存)、“Memory”(內存)、“Objects”(對象)、“PhysicalDisk”(物理磁盤)、“PRocess”(進程)、“Processor”(處理器)、“Server”(服務器)、“System”(系統)和“Thread”(線程)等類別。
public static void GetCategoryNameList() { PerformanceCounterCategory[] myCat2; myCat2 = PerformanceCounterCategory.GetCategories(); for (int i = 0; i < myCat2.Length; i++) { Console.WriteLine(myCat2[i].CategoryName.ToString()); } }注:GetCategories()使用時,會報錯“參數“categoryName”的值“”無效?!?/strong>此時 .NET不兼容問題,categoryName在4.0以下,4.5使用不了。
2 獲取性能計數器類別下的實例的名稱實例下的性能計數器的名稱
public static void GetInstanceNameListANDCounterNameList(string CategoryName) { string[] instanceNames; ArrayList counters = new ArrayList(); PerformanceCounterCategory mycat = new PerformanceCounterCategory(CategoryName); try { instanceNames = mycat.GetInstanceNames(); if (instanceNames.Length == 0) { counters.AddRange(mycat.GetCounters()); } else { for (int i = 0; i < instanceNames.Length; i++) { counters.AddRange(mycat.GetCounters(instanceNames[i])); } } for (int i = 0; i < instanceNames.Length; i++) { Console.WriteLine(instanceNames[i]); } Console.WriteLine("******************************"); foreach (PerformanceCounter counter in counters) { Console.WriteLine(counter.CounterName); } } catch (Exception) { Console.WriteLine("Unable to list the counters for this category"); } }3 根據categoryName,counterName,instanceName獲得性能情況顯示`
private static void PerformanceCounterFun(string CategoryName, string InstanceName, string CounterName) { PerformanceCounter pc = new PerformanceCounter(CategoryName, CounterName, InstanceName); while (true) { Thread.Sleep(1000); // wait for 1 second float cpuLoad = pc.NextValue(); Console.WriteLine("CPU load = " + cpuLoad + " %."); } }4 調用方法3顯示cpu使用率
PerformanceCounterFun("Processor", "_Total", "% Processor Time");名稱 | 說明 |
---|---|
CounterExists | 已重載。 確定是否向特定的類別注冊了指定的計數器。 |
Create | 已重載。 向系統注冊自定義性能計數器類別和一個或多個計數器。 |
Delete | 從本地計算機移除類別及其關聯的計數器。 |
Equals | 已重載。 確定兩個 Object 實例是否相等。 (從 Object 繼承) |
Exists | 已重載。 確定是否在系統上注冊了該類別。 |
GetCategories | 已重載。 檢索計算機上注冊的性能計數器類別的列表。 |
GetCounters | 已重載。 檢索此性能計數器類別中的計數器列表。 |
GetHashCode | 用作特定類型的哈希函數。 (從 Object 繼承) |
GetInstanceNames | 已重載。 檢索此性能計數器類別中的計數器列表。 |
GetType | 檢索與此類別關聯的性能對象實例列表。 |
InstanceExists | 已重載。 確定該類別是否包含指定的性能對象實例。 |
ReadCategory | 讀取與此性能計數器類別關聯的所有計數器和性能對象實例數據。 |
ReferenceEquals | 確定指定的 Object 實例是否是相同的實例。 (從 Object 繼承) |
ToString | 返回表示當前 Object 的 String。 (從 Object 繼承) |
名稱 | 說明 |
---|---|
Finalize | 允許 Object 在“垃圾回收”回收 Object 之前嘗試釋放資源并執行其他清理操作。 (從 Object 繼承) |
MemberwiseClone | 創建當前 Object 的淺表副本。 (從 Object 繼承) |
名稱 | 說明 |
---|---|
PerformanceCounterCategory () | 初始化 PerformanceCounterCategory 類的新實例,讓 CategoryName 屬性保持為空,并將 MachineName 屬性設置為本地計算機。 |
PerformanceCounterCategory (String) | 初始化 PerformanceCounterCategory 類的新實例,將 CategoryName 屬性設置為指定的值,并將 MachineName 屬性設置為本地計算機。 |
PerformanceCounterCategory (String, String) | 初始化 PerformanceCounterCategory 類的新實例,并將 CategoryName 和 MachineName 屬性設置為指定的值。 |
名稱 | 說明 |
---|---|
CategoryHelp | 獲取類別的幫助文字。 |
CategoryName | 獲取或設置定義此類別的性能對象的名稱 |
CategoryType | 獲取性能計數器類別類型。 |
MachineName | 獲取或設置此類別所在的計算機的名稱。 |
新聞熱點
疑難解答