Cómo: Recuperar listas de contadores y categorías
Actualización: noviembre 2007
Puede usar el método GetCounters de la clase PerformanceCounterCategory para recuperar rápidamente una lista con todos los contadores o instancias de una categoría específica. Cada vez que se solicita un valor de una categoría creando una instancia de un objeto PerformanceCounter, estableciéndola en un contador existente y recuperando un valor, el sistema lee la categoría entera y recupera el contador solicitado. Esto significa que, si solicitamos cinco contadores diferentes de una categoría que contiene 20 contadores, el sistema lee los 20 contadores de la categoría cinco veces, buscando cada contador por separado. Mediante GetCounters obtenemos los mismos datos, pero la categoría sólo se lee una vez.
El método GetCounters devuelve una matriz del tipo PerformanceCounter que contiene los contadores de la categoría. Puede utilizar la propiedad Item para trabajar con el contenido de la colección.
Además de recuperar contadores, también puede utilizar el método estático GetCategories para devolver una lista de categorías del equipo actual o de cualquier servidor al que tenga acceso. GetCategories devuelve una matriz de objetos PerformanceCounterCategory.
Para recuperar los contadores de una categoría
Cree un objeto PerformanceCounter y configúrelo para que apunte a la categoría deseada. Para obtener más información, vea Cómo: Crear instancias de componentes PerformanceCounter o Cómo: Configurar instancias de componentes PerformanceCounter.
Cree una matriz de tipo PerformanceCounter que contenga la lista de categorías resultante.
Llame al método GetCounters de la clase PerformanceCounterCategory y especifique como parámetro la categoría deseada.
Establezca los resultados en la matriz.
En el ejemplo siguiente se muestra cómo se recuperan todos los contadores de la categoría Cache. En este fragmento de código se presupone que se trabaja con una aplicación de Windows Forms que contiene un botón y un control ListBox. También se presupone que se ha establecido una referencia a System.dll y una instrucción Imports (en Visual Basic) o una instrucción using (en C#) del espacio de nombres System.Diagnostics:
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); } }
Para recuperar todas las categorías de un equipo
Cree una matriz de tipo PerformanceCounter que contenga la lista de categorías resultante.
Llame al método GetCategories de la clase PerformanceCounterCategory y especifique como parámetro la categoría deseada.
Establezca los resultados en la matriz.
En el ejemplo de código siguiente se muestra cómo se recuperan todas las categorías del equipo local. En este fragmento de código se presupone que se trabaja con una aplicación de Windows Forms que contiene un botón y un control ListBox. También se presupone que se ha establecido una referencia a System.dll y una instrucción Imports (en Visual Basic) o una instrucción using (en C#) del espacio de nombres System.Diagnostics:
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); } }
Vea también
Tareas
Cómo: Crear instancias de componentes PerformanceCounter
Cómo: Configurar instancias de componentes PerformanceCounter