Utilizar PerformanceCounter desde Visual C# Fecha: 02/Dic/2004 (02/12/04)
|
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!