Debo estar haciendo algo muy mal aquí. Puedo crear un contador de rendimiento personalizada de la siguiente manera:¿Por qué no cambiarán mis contadores de rendimiento?
string counterCategory = "Test Category";
string counterName = "Test Counter";
if (!PerformanceCounterCategory.Exists(counterCategory))
{
Console.WriteLine("Creating Counters");
CounterCreationDataCollection counterCreationDataCollection =
new CounterCreationDataCollection();
counterCreationDataCollection.Add(
new CounterCreationData(counterName,
"Description",
PerformanceCounterType.NumberOfItems32)
);
PerformanceCounterCategory.Create(counterCategory,
"My category description/Help",
PerformanceCounterCategoryType.SingleInstance,
counterCreationDataCollection);
}
La categoría de contador y el contador se crean y se podrá ver en el monitor de rendimiento.
que a continuación, intenta cambiar el valor del contador
PerformanceCounter myCounter =
new PerformanceCounter(counterCategory, counterName, false);
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Setting to "+i);
myCounter.RawValue = i;
Thread.Sleep(200);
}
myCounter.Close();
Sin embargo, ya que sentarse y ver el contador de monitor de rendimiento no pasa nada, el valor nunca cambia.
Entonces, ¿qué estoy haciendo mal?
Si agrego una llamada a nextValue(), o rawValue() el valor de eso se devuelve como esperaba, pero el Monitor de rendimiento de Windows aún muestra una línea plana, p.
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Setting to "+i);
myCounter.IncrementValue()
Console.WriteLine("Next Value = "+myCounter.RawValue());
Thread.Sleep(200);
}
Editar: He descubierto que si cierro el monitor de rendimiento y luego volver a abrirlo sin borrar los contadores, que de repente se da cuenta de que hay un nuevo valor. Por lo tanto, los valores se establecen y persisten, sin embargo, el Monitor de rendimiento no ve los cambios.
O en mi caso, un reinicio. –