方法 : カウンタおよびカテゴリのリストを取得する
更新 : 2007 年 11 月
PerformanceCounterCategory クラスの GetCounters メソッドを使用して、特定のカテゴリ内のすべてのカウンタまたはインスタンスのリストをすばやく取得できます。カテゴリから値を要求すると (PerformanceCounter オブジェクトのインスタンスを作成し、それを既存のカウンタに設定して、値を取得すると)、システムはカテゴリ全体を読み取って、要求されたカウンタを取得します。つまり、20 個のカウンタを含むカテゴリから 5 つの異なるカウンタを要求した場合、システムはカテゴリ内の 20 個のカウンタすべてを 5 回読み取って、それぞれのカウンタを個別に検索します。GetCounters を使用すると、カテゴリを 1 回読み取るだけで同じデータを取得できます。
GetCounters メソッドは、カテゴリ内のカウンタを含む PerformanceCounter 型の配列を返します。Item プロパティを使用して、コレクション内のカウンタとやり取りできます。
カウンタを取得するだけでなく、静的な GetCategories メソッドを使用して、現在のコンピュータ上またはアクセス可能な任意のサーバー上にあるカテゴリのリストを取得することもできます。GetCategories は PerformanceCounterCategory オブジェクトの配列を返します。
カテゴリ内のカウンタを取得するには
PerformanceCounter オブジェクトを作成し、目的のカテゴリを指し示すように設定します。詳細については、「方法 : PerformanceCounter コンポーネントのインスタンスを作成する」または「方法 : PerformanceCounter コンポーネントのインスタンスを設定する」を参照してください。
結果のカテゴリ リストを格納する PerformanceCounter 型の配列を作成します。
目的のカテゴリをパラメータとして指定して、PerformanceCounterCategory クラスの GetCounters メソッドを呼び出します。
結果を配列に設定します。
Cache カテゴリのカウンタをすべて取得する方法の例を、次に示します。このコードは、1 つのボタンと 1 つの ListBox コントロールを含む Windows フォーム アプリケーションで作業していることを仮定しています。また、System.dll への参照があり、System.Diagnostics 名前空間についての Imports ステートメント (Visual Basic の場合) または using ステートメント (C# の場合) があることを仮定しています。
Private Sub btnGetCounters_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetCounters.Click Dim mypc() As PerformanceCounter Dim i As Integer Dim myCat As New PerformanceCounterCategory("Cache") ' Remove the current contents of the list. Me.ListBox1.Items.Clear() ' Retrieve the counters. mypc = myCat.GetCounters ' Add the retrieved counters to the list. For i = 0 To mypc.Length - 1 Me.ListBox1.Items.Add(mypc(i).CounterName) Next End Sub
private void btnGetCounters_Click(object sender, EventArgs e) { System.Diagnostics.PerformanceCounter[] mypc; System.Diagnostics.PerformanceCounterCategory mycat = new System.Diagnostics.PerformanceCounterCategory("cache"); // Remove the current contents of the list. this.listBox1.Items.Clear(); // Retrieve the counters. mypc = mycat.GetCounters(); // Add the retrieved counters to the list. for (int i = 0; i < mypc.Length; i++) { this.listBox1.Items.Add(mypc[i].CounterName); } }
コンピュータ上のすべてのカテゴリを取得するには
結果のカテゴリ リストを格納する PerformanceCounter 型の配列を作成します。
目的のカテゴリをパラメータとして指定して、PerformanceCounterCategory クラスの GetCategories メソッドを呼び出します。
結果を配列に設定します。
ローカル コンピュータ上のすべてのカテゴリを取得する方法を、次のコードに示します。このコードは、1 つのボタンと 1 つの ListBox コントロールを含む Windows フォーム アプリケーションで作業していることを仮定しています。また、System.dll への参照があり、System.Diagnostics 名前空間についての Imports ステートメント (Visual Basic の場合) または using ステートメント (C# の場合) があることを仮定しています。
Private Sub btnGetCategories_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Dim myCat2 As PerformanceCounterCategory() Dim i As Integer ' Clear the contents of the list box. Me.listBox2.Items.Clear() ' Retrieve the categories. myCat2 = PerformanceCounterCategory.GetCategories ' Add the retrieved categories to the list. For i = 0 To myCat2.Length - 1 Me.listBox2.Items.Add(myCat2(i).CategoryName) Next End Sub
private void btnGetCategories_Click(object sender, EventArgs e) { System.Diagnostics.PerformanceCounterCategory[] myCat2; // Clear the list's current contents. this.listBox2.Items.Clear(); // Retrieve the categories. myCat2 = System.Diagnostics.PerformanceCounterCategory.GetCategories(); // Add the retrieved categories to the list. for (int i = 0; i < myCat2.Length; i++) { this.listBox2.Items.Add(myCat2[i].CategoryName); } }
参照
処理手順
方法 : PerformanceCounter コンポーネントのインスタンスを作成する
方法 : PerformanceCounter コンポーネントのインスタンスを設定する