HOW TO:建立自訂效能計數器
更新:2007 年 11 月
當您建立新的計數器時,首先建立分類,再指定其中要包含的一個或多個計數器。您可以以下列方法之一完成此工作:
您可以在設計階段使用 [伺服器總管] 建立一個或多個計數器。
您可以使用 CounterCreationData 類別,以程式設計方式建立一個或多個計數器,再將它們加入至 CounterCreationDataCollection 型別的集合,並傳遞此集合做為 Create 方法之特殊表單的參數。
您也可以使用 PerformanceCounterCategory 類別的 Create 方法,在新的分類中建立單一計數器。如需詳細資訊,請參閱 HOW TO:建立效能計數器分類。
在建立計數器和分類時,有兩個特殊的問題您應該特別注意。首先,您無法在遠端電腦上建立自訂分類和計數器。第二,除非另外明確指定,否則您與自訂計數器和分類的互動會限制在唯讀模式之下。在唯讀模式中,您無法進行遞增或遞減動作,也不能在其中設定未經處理值或其他值。您可以使用 ReadOnly 屬性,將自訂計數器設定為可寫入的模式。
重要的是,請注意建立計數器與建立 PerformanceCounter 元件執行個體間的差異。當您建立計數器時,是在 Windows 作業系統中建立新的分類和相關的計數器,而不是在專案或應用程式中建立元件。當您建立 PerformanceCounter 元件的執行個體時,是在 Visual Studio 專案裡建立一個參考外部計數器的元件。
注意事項: |
---|
有一些安全性限制會影響您使用效能計數器的能力。如需詳細資訊,請參閱監視效能臨界值簡介。 |
安全性注意事項: |
---|
在建立效能計數器時,請注意資源可能已經存在。另一個也許是惡意的處理序,可能已經建立資源,而且擁有其存取權限。將資料置於效能計數器時,其他處理序可以使用該資料。 |
注意事項: |
---|
Microsoft Windows NT 4.0 版並未完全支援 PerformanceCounter 類別。您可讀取系統計數器,但是您無法建立、寫入或刪除自訂計數器。 |
注意事項: |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要在設計階段建立新的分類和自訂效能計數器
開啟 [伺服器總管] 並展開想要檢視的伺服器節點。
注意事項: 如果沒有列出想檢視的伺服器,則您必須將它加入。如需詳細資訊,請參閱 HOW TO:存取及初始化伺服器總管/資料庫總管。
以滑鼠右鍵按一下 [效能計數器] 節點,並選取 [建立新分類]。
[效能計數器產生器] 對話方塊隨即出現。
注意事項: 若要存取效能計數器,您必須是可存取效能計數器之安全性群組的成員 (例如,[Performance Monitor Users] 群組)。此外,當您嘗試在 Windows Vista 上執行需要更高權限的動作,或甚至是以系統管理權限執行動作時,可能會出現提示。如需詳細資訊,請參閱 Windows Vista 和 Visual Studio。
輸入想要建立的分類的名稱和描述。
注意事項: 如果您指定了現有分類的名稱,將引發錯誤。若要覆寫現有的計數器分類,必須先以 Delete 方法刪除此分類,再加入新的分類。
在 [計數器清單產生器] 框架 (Frame) 中,執行下列動作:
按一下 [新增] 按鈕。
在 [計數器] 框架中,指定想要在分類中建立的計數器名稱。
在 [類型] 下拉式清單中選擇類型。
輸入計數器的描述。
對想要在此分類中建立的每個計數器重複步驟 4。
秘訣 在您退出對話方塊前,可以在 [計數器] 清單中選取任何計數器,並編輯其值或刪除計數器。
注意事項: 根據預設,在這個對話方塊中建立的計數器和分類都可讀寫,除非另外指定,否則透過 PerformanceCounter 元件執行個體與這些計數器和分類進行的互動都是限制為唯讀的。
若要以程式設計方式建立新的分類和效能計數器組
建立型別為 CounterCreationDataCollection 的集合。
建立想要建立為 CounterCreationData 型別物件的計數器,並設定必要的屬性。
呼叫集合的 Add 方法,將 CounterCreationData 物件加入至集合中。
呼叫 PerformanceCounterCategory 類別的 Create 方法,並將集合傳遞給它。
下列範例顯示如何建立一系列計數器並在建立分類時將這些計數器傳遞給此分類:
' Create a collection of type CounterCreationDataCollection. Dim CounterDatas As New CounterCreationDataCollection() ' Create the counters and set their properties. Dim cdCounter1 As New CounterCreationData() Dim cdCounter2 As New CounterCreationData() cdCounter1.CounterName = "MyCounter1" cdCounter1.CounterHelp = "help string" cdCounter1.CounterType = PerformanceCounterType.NumberOfItems64 cdCounter2.CounterName = "MyCounter2" cdCounter2.CounterHelp = "help string 2" cdCounter2.CounterType = PerformanceCounterType.NumberOfItems64 ' Add both counters to the collection. CounterDatas.Add(cdCounter1) CounterDatas.Add(cdCounter2) ' Create the category and pass the collection to it. PerformanceCounterCategory.Create("Multi Counter Category", _ "Category help", PerformanceCounterCategoryType.SingleInstance, _ CounterDatas)
// Create a collection of type CounterCreationDataCollection. System.Diagnostics.CounterCreationDataCollection CounterDatas = new System.Diagnostics.CounterCreationDataCollection(); // Create the counters and set their properties. System.Diagnostics.CounterCreationData cdCounter1 = new System.Diagnostics.CounterCreationData(); System.Diagnostics.CounterCreationData cdCounter2 = new System.Diagnostics.CounterCreationData(); cdCounter1.CounterName = "Counter1"; cdCounter1.CounterHelp = "help string1"; cdCounter1.CounterType = System.Diagnostics.PerformanceCounterType.NumberOfItems64; cdCounter2.CounterName = "Counter2"; cdCounter2.CounterHelp = "help string 2"; cdCounter2.CounterType = System.Diagnostics.PerformanceCounterType.NumberOfItems64; // Add both counters to the collection. CounterDatas.Add(cdCounter1); CounterDatas.Add(cdCounter2); // Create the category and pass the collection to it. System.Diagnostics.PerformanceCounterCategory.Create( "Multi Counter Category", "Category help", PerformanceCounterCategoryType.SingleInstance, CounterDatas);