Compartir a través de


Tutorial: Recuperar categorías y contadores

Actualización: noviembre 2007

Los procedimientos de este tutorial le guiarán a través del proceso de crear y configurar instancias del componente PerformanceCounter y de utilizarlas para recuperar listas de categorías de contadores de rendimiento y de contadores del sistema. Un contador de rendimiento es el medio que utiliza Windows para recopilar datos de rendimiento de los diversos recursos del sistema. Windows contiene un conjunto de contadores predefinidos, organizados en categorías, con los que se puede interactuar. Cada categoría y cada contador están relacionados con un área específica de funcionalidad del sistema.

En este tutorial:

  • Creará una instancia del componente PerformanceCounter y la configurará de modo que interactúe con una categoría específica de contadores generados por el sistema.

  • Creará una aplicación para Windows que muestra información acerca de las categorías y contadores en un cuadro de lista.

  • Utilizará el método GetCategories para devolver una lista de categorías del equipo local.

  • Utilizará el método GetCounters para devolver una lista de contadores de la categoría especificada.

Para crear la aplicación para Windows

  1. En el cuadro de diálogo Nuevo proyecto, cree una Aplicación para Windows de Visual Basic, Visual C# o Visual J#.

  2. En la ficha Windows Forms del Cuadro de herramientas, agregue dos botones y dos cuadros de lista al formulario. Organícelos en el orden que desee y establezca las siguientes propiedades:

    Control

    Propiedad

    Valor

    Button1

    Name

    btnGetCounters

     

    Text

    Obtener contadores

    Button2

    Name

    btnGetCategories

     

    Text

    Obtener categorías

    ListBox1

    Name

    lstCounters

     

    ScrollAlwaysVisible

    True

    ListBox2

    Name

    lstCategories

     

    ScrollAlwaysVisible

    True

  3. Guarde su trabajo.

Para recuperar la lista de categorías

  1. En la vista Diseño, haga doble clic en el botón Obtener categorías para tener acceso al Editor de código.

  2. En la versión de Visual J#, en la parte superior de la pantalla, agregue una instrucción import que haga referencia al espacio de nombres System.Diagnostics.

  3. En el procedimiento btnGetCategories_Click, agregue el código siguiente para recuperar la lista de categorías del equipo local.

    Private Sub btnGetCategories_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnGetCategories.Click
    
       Dim myCat2 As PerformanceCounterCategory()
       Dim i As Integer
       ' Remove the current contents of the list.
       Me.lstCategories.Items.Clear()
       ' Retrieve the categories.
       myCat2 = PerformanceCounterCategory.GetCategories
       ' Add the retrieved categories to the list.
       For i = 0 To myCat2.Length - 1
          Me.lstCategories.Items.Add(myCat2(i).CategoryName)
       Next
    End Sub
    
    private void btnGetCategories_Click(object sender, System.EventArgs e)
    {
       System.Diagnostics.PerformanceCounterCategory[] myCat2;
       // Remove the current contents of the list.
       this.lstCategories.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.lstCategories.Items.Add(myCat2[i].CategoryName);
       }
    }
    

Para recuperar la lista de contadores

  1. En la vista Diseño, haga doble clic en el botón Obtener contadores para tener acceso al Editor de código. El punto de inserción se situará en el evento btnGetCounters_Click.

  2. Agregue el código siguiente para recuperar la lista de contadores de la categoría seleccionada.

    Private Sub btnGetCounters_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles btnGetCounters.Click
    
       Dim instanceNames() As String
       Dim counters As New System.Collections.ArrayList()
    
       If (Me.lstCategories.SelectedIndex <> -1) Then
          Dim mycat As New PerformanceCounterCategory( _
             Me.lstCategories.SelectedItem.ToString())
          ' Remove the current contents of the list.
          Me.lstCounters.Items.Clear()
          ' Retrieve the counters.
          Try
             instanceNames = mycat.GetInstanceNames()
             If (instanceNames.Length = 0) Then
                counters.AddRange(mycat.GetCounters())
             Else
                Dim i As Integer
                For i = 0 To instanceNames.Length - 1
                   counters.AddRange( _
                      mycat.GetCounters(instanceNames(i)))
                Next
             End If
             ' Add the retrieved counters to the list.
             Dim counter As PerformanceCounter
             For Each counter In counters
                Me.lstCounters.Items.Add(counter.CounterName)
             Next
          Catch ex As Exception
             MessageBox.Show( _
                "Unable to list the counters for this category:" _
                & ControlChars.CrLf & ex.Message)
          End Try
       End If
    End Sub
    
    private void btnGetCounters_Click(object sender, System.EventArgs e)
    {
       string[] instanceNames;
       System.Collections.ArrayList counters = new 
          System.Collections.ArrayList();
       if (this.lstCategories.SelectedIndex != -1) 
       {
          System.Diagnostics.PerformanceCounterCategory mycat = new 
             System.Diagnostics.PerformanceCounterCategory(
             this.lstCategories.SelectedItem.ToString());
          // Remove the current contents of the list.
          this.lstCounters.Items.Clear();
          // Retrieve the counters.
          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]));
                }
             }
    
             // Add the retrieved counters to the list.
             foreach (System.Diagnostics.PerformanceCounter counter 
                in counters) 
             {
                this.lstCounters.Items.Add(counter.CounterName);
             }
          }
          catch (System.Exception ex)
          {
             MessageBox.Show(
                "Unable to list the counters for this category:\n" 
                + ex.Message);
          }
       }
    }
    

Para probar la aplicación

  1. Guarde y compile la aplicación.

  2. Haga clic en el botón Obtener categorías. Verá una lista de categorías en el cuadro de lista.

  3. Seleccione una de las categorías y haga clic en el botón Obtener contadores. Verá una lista de contadores para la categoría seleccionada.

Vea también

Conceptos

Introducción a la supervisión de umbrales de rendimiento

Otros recursos

Supervisar umbrales de rendimiento

Tutoriales sobre los contadores de rendimiento