1 簡單介紹 表示 Windows NT 性能計(jì)數(shù)器組件 命名空間:System.Diagnostics 程序集:System(在 system.dll 中) 2 構(gòu)造函數(shù)(只介紹本文要用到的) PerformanceCounter (String, String, String) 功能: 初始化 PerformanceCounter 類的新的只讀實(shí)例, 并將其與本地計(jì)算機(jī)上指定的系統(tǒng)性能計(jì)數(shù)器或自定義性能計(jì)數(shù)器及類別實(shí)例關(guān)聯(lián) 參數(shù)說明: public PerformanceCounter ( string categoryName, string counterName, string instanceName ) categoryName 性能計(jì)數(shù)器關(guān)聯(lián)的性能計(jì)數(shù)器類別(性能對象)的名稱。 counterName 性能計(jì)數(shù)器的名稱。 instanceName 性能計(jì)數(shù)器類別實(shí)例的名稱,或者為空字符串 (“”)(如果該類別包含單個(gè)實(shí)例)。
需要引用命名空間
using System.Diagnostics;using System.Threading;using System.Collections;1 獲取性能計(jì)數(shù)器類別列表 PerformanceCounterCategory 實(shí)例的 CategoryName 屬性顯示在“性能查看器”應(yīng)用程序的“添加計(jì)數(shù)器”對話框的“性能對象”字段中。 PerformanceCounterCategory 類提供幾種用于與計(jì)算機(jī)上的計(jì)數(shù)器和類別交互的方法。Create 方法使您能夠定義自定義類別。Delete 方法提供從計(jì)算機(jī)移除類別的方法。GetCategories 方法使您能夠查看類別的列表,而 ReadCategory 則檢索與單個(gè)類別關(guān)聯(lián)的所有計(jì)數(shù)器和實(shí)例數(shù)據(jù)。 性能計(jì)數(shù)器發(fā)布有關(guān)應(yīng)用程序的性能數(shù)據(jù)。類別包括物理組件(如處理器、磁盤和內(nèi)存)和系統(tǒng)對象(如進(jìn)程和線程)。與同一性能對象相關(guān)的系統(tǒng)計(jì)數(shù)器歸入一個(gè)指示其共同點(diǎn)的類別。當(dāng)創(chuàng)建 PerformanceCounter 類的實(shí)例時(shí),首先指示該組件將與之交互的類別,然后從該類別中選擇一個(gè)計(jì)數(shù)器。 例如,一個(gè) Windows 計(jì)數(shù)器類別屬于“Memory”(內(nèi)存)類別。此類別內(nèi)的系統(tǒng)計(jì)數(shù)器跟蹤內(nèi)存數(shù)據(jù),如可用字節(jié)數(shù)和緩存的字節(jié)數(shù)。如果要在應(yīng)用程序中使用緩存的字節(jié),則應(yīng)創(chuàng)建 PerformanceCounter 組件的實(shí)例,將其連接到“Memory”(內(nèi)存)類別,然后從該類別中選取相應(yīng)的計(jì)數(shù)器(在這種情況下,選取“Cached Bytes”(緩存字節(jié)))。 雖然系統(tǒng)中有很多可用的計(jì)數(shù)器類別,但與之交互最頻繁的可能是“Cache”(緩存)、“Memory”(內(nèi)存)、“Objects”(對象)、“PhysicalDisk”(物理磁盤)、“PRocess”(進(jìn)程)、“Processor”(處理器)、“Server”(服務(wù)器)、“System”(系統(tǒng))和“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()使用時(shí),會(huì)報(bào)錯(cuò)“參數(shù)“categoryName”的值“”無效。”此時(shí) .NET不兼容問題,categoryName在4.0以下,4.5使用不了。
2 獲取性能計(jì)數(shù)器類別下的實(shí)例的名稱實(shí)例下的性能計(jì)數(shù)器的名稱
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 根據(jù)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 調(diào)用方法3顯示cpu使用率
PerformanceCounterFun("Processor", "_Total", "% Processor Time");名稱 | 說明 |
---|---|
CounterExists | 已重載。 確定是否向特定的類別注冊了指定的計(jì)數(shù)器。 |
Create | 已重載。 向系統(tǒng)注冊自定義性能計(jì)數(shù)器類別和一個(gè)或多個(gè)計(jì)數(shù)器。 |
Delete | 從本地計(jì)算機(jī)移除類別及其關(guān)聯(lián)的計(jì)數(shù)器。 |
Equals | 已重載。 確定兩個(gè) Object 實(shí)例是否相等。 (從 Object 繼承) |
Exists | 已重載。 確定是否在系統(tǒng)上注冊了該類別。 |
GetCategories | 已重載。 檢索計(jì)算機(jī)上注冊的性能計(jì)數(shù)器類別的列表。 |
GetCounters | 已重載。 檢索此性能計(jì)數(shù)器類別中的計(jì)數(shù)器列表。 |
GetHashCode | 用作特定類型的哈希函數(shù)。 (從 Object 繼承) |
GetInstanceNames | 已重載。 檢索此性能計(jì)數(shù)器類別中的計(jì)數(shù)器列表。 |
GetType | 檢索與此類別關(guān)聯(lián)的性能對象實(shí)例列表。 |
InstanceExists | 已重載。 確定該類別是否包含指定的性能對象實(shí)例。 |
ReadCategory | 讀取與此性能計(jì)數(shù)器類別關(guān)聯(lián)的所有計(jì)數(shù)器和性能對象實(shí)例數(shù)據(jù)。 |
ReferenceEquals | 確定指定的 Object 實(shí)例是否是相同的實(shí)例。 (從 Object 繼承) |
ToString | 返回表示當(dāng)前 Object 的 String。 (從 Object 繼承) |
名稱 | 說明 |
---|---|
Finalize | 允許 Object 在“垃圾回收”回收 Object 之前嘗試釋放資源并執(zhí)行其他清理操作。 (從 Object 繼承) |
MemberwiseClone | 創(chuàng)建當(dāng)前 Object 的淺表副本。 (從 Object 繼承) |
名稱 | 說明 |
---|---|
PerformanceCounterCategory () | 初始化 PerformanceCounterCategory 類的新實(shí)例,讓 CategoryName 屬性保持為空,并將 MachineName 屬性設(shè)置為本地計(jì)算機(jī)。 |
PerformanceCounterCategory (String) | 初始化 PerformanceCounterCategory 類的新實(shí)例,將 CategoryName 屬性設(shè)置為指定的值,并將 MachineName 屬性設(shè)置為本地計(jì)算機(jī)。 |
PerformanceCounterCategory (String, String) | 初始化 PerformanceCounterCategory 類的新實(shí)例,并將 CategoryName 和 MachineName 屬性設(shè)置為指定的值。 |
名稱 | 說明 |
---|---|
CategoryHelp | 獲取類別的幫助文字。 |
CategoryName | 獲取或設(shè)置定義此類別的性能對象的名稱 |
CategoryType | 獲取性能計(jì)數(shù)器類別類型。 |
MachineName | 獲取或設(shè)置此類別所在的計(jì)算機(jī)的名稱。 |
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注