Exportar (0) Imprimir
Expandir todo

Cómo: Recuperar listas de contadores y categorías

Puede utilizar 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 toda la categoría 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. Utilizando 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

  1. 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.

  2. Cree una matriz de tipo PerformanceCounter que contenga la lista de categorías resultante.

  3. Llame al método GetCounters de la clase PerformanceCounterCategory y especifique como parámetro la categoría deseada.

  4. 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 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);
        }
    }
    
    
    private void btnGetCounters_Click(System.Object sender,
     System.EventArgs e)
    {
       System.Diagnostics.PerformanceCounter mypc[];
       System.Diagnostics.PerformanceCounterCategory mycat =
          new System.Diagnostics.PerformanceCounterCategory("cache");
       // Remove the current contents of the list.
       this.listBox1.get_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.get_Items().Add(mypc[i].get_CounterName());
       } 
    }
    

Para recuperar todas las categorías de un equipo

  1. Cree una matriz de tipo PerformanceCounter que contenga la lista de categorías resultante.

  2. Llame al método GetCategories de la clase PerformanceCounterCategory y especifique como parámetro la categoría deseada.

  3. 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 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);
        }
    }
    
    
    private void btnGetCategories_Click(Object sender, System.EventArgs e) {
       System.Diagnostics.PerformanceCounterCategory myCat2[];
       // Clear the list's current contents.
       this.listBox2.get_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.get_Items().Add(myCat2[i].get_CategoryName());
       } 
    }
    

Vea también

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft