У меня небольшие проблемы с увеличением пользовательского счетчика производительности в Windows 7. Категория создана, Счетчики созданы, но вызов «Increment ()» или настройка «RawValue» не имеет видимого эффекта.Например, возвращаемое значение Increment () остается равным 0L.
Следующий код представляет собой консольное приложение, которое необходимо будет запускать от имени администратора для создания категории.Отладка через демонстрирует вышеуказанный симптом.
Любая помощь очень ценится.
class Program
{
private static string _category = "MyCustomCounters";
static void Main(string[] args)
{
var deleteIfExists = false;
if (args.Any())
{
if (args.Count() > 0)
{
_category = args[0];
}
if (args.Count() > 1)
{
deleteIfExists = args[1].ToUpper() == bool.TrueString.ToUpper();
}
}
CreateCustomCounters(_category, deleteIfExists);
}
private static void CreateCustomCounters(string category, bool deleteIfExists)
{
if (deleteIfExists && PerformanceCounterCategory.Exists(category))
{
PerformanceCounterCategory.Delete(category);
}
if (!PerformanceCounterCategory.Exists(category))
{
CounterCreationDataCollection counterCollection = new CounterCreationDataCollection();
// add a counter tracking operations per second
CounterCreationData opsPerSec = new CounterCreationData();
opsPerSec.CounterName = "# requests /sec";
opsPerSec.CounterHelp = "Number of requests executed per second";
opsPerSec.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;
counterCollection.Add(opsPerSec);
// add a counter tracking operations per second
CounterCreationData operationTotal = new CounterCreationData();
operationTotal.CounterName = "Total # requests";
operationTotal.CounterHelp = "Total number of requests executed";
operationTotal.CounterType = PerformanceCounterType.NumberOfItems32;
counterCollection.Add(operationTotal);
PerformanceCounterCategory.Create(category,
"A custom counter category that tracks execution", PerformanceCounterCategoryType.SingleInstance,
counterCollection);
}
else
{
Console.Error.WriteLine("Counter already exists, try specifying parameters for categoryname and or insisting on deleting");
}
using (var _totalOperationsCounter = new PerformanceCounter(_category, "Total # requests", false))
{
_totalOperationsCounter.ReadOnly = false;
_totalOperationsCounter.RawValue = 10;
var count = _totalOperationsCounter.Increment();
}
}
}