Utilizar PerformanceCounter desde Visual C#

Fecha: 02/Dic/2004 (02/12/04)
Autor: José Miguel Torres (jtorres_diaz@terra.es)

 


Veamos como podemos utilizar el PerformanceCounter del sistema operativo para nuestra propia aplicación aplicando nuestros parámetros de medida y obteniendo la información en cualquier momento.

Fig1. Consola de rendimiento

Código

He aquí un ejemplo completo documentado de su utilización:

      // Using System.Diagnostics;
     
// comprovamos si existe el grupo de contador que 
     
// deseamos crear, si no existe lo creamos
     
if(!PerformanceCounterCategory.Exists("ContadorEjemplo"))
     
{
      
      //creamos una colección para objetos CounterCreationData
      
      CounterCreationDataCollection contadores
            
      = new CounterCreationDataCollection();

            //Creamos un par de contadores  de tipo Número de Items
      
      CounterCreationData cVentas = new
            
      CounterCreationData(
            
      "Ventas","Contador de ejemplo de ventas realizadas.",PerformanceCounterType.NumberOfItems32);
      
      contadores.Add(cVentas);

            CounterCreationData cCompras = new
            
      CounterCreationData("Compras","Contador de ejemplo de compras realizadas.",                   PerformanceCounterType.NumberOfItems32);
      
      contadores.Add(cCompras);

            // ahora un contador de ratio por segundos
      
      CounterCreationData cPeticiones = new
            
      CounterCreationData("Peticiones / segundo","Contador de ejemplo de peticiones por segundo.",
            
      PerformanceCounterType.RateOfCountsPerSecond32);
      
      contadores.Add(cPeticiones);

            // añadimos ambos contadores a una categoría
      
      PerformanceCounterCategory.Create
            
      ("ContadorEjemplo",
            
      "Ventas y compras de ejemplo",
                  contadores);

      }

 

Hemos registrado el contador, comprobémoslo en la consola de Rendimiento ver fig 2.

Fig2. Contadores creados.

Ahora  ¡Utilicémoslo!

// importante indicarle false en el parámetro ReadOnly si queremos
// modificar el valor

PerformanceCounter pc = new
PerformanceCounter("ContadorEjemplo","Ventas",false);

// incrementamos ventas en 100 (miren el contador de rendimiento de WinNT)
pc.IncrementBy(100);

Fig3. Incremento en 100 de Ventas.

También tenemos la posibilidad de obtener el valor del contador.

 // Si queremos obtener el valor de un det. contador lo haremos así
long
valor = pc.RawValue;

        A partir de aquí, ¡las posibilidades son infinitas!


ir al índice