2009-10-18 3 views
0

Я пытаюсь показать количество операций, которые произошли с момента последней итерации производительности. Я создал счетчик производительности, используя следующее:Нужен пример использования CounterDelta32 PerformanceCounter

var clearStateCounterData = new CounterCreationData() 
{ 
    CounterName = ClearStateName, 
    CounterHelp = "The number of times the service state has been cleared since the last performance iteration", 
    CounterType = PerformanceCounterType.CounterDelta32 
}; 

Тогда я называю counter.Increment() в моем приложении, но я никогда не видеть ход счетчика производительности значение. Даже если я запускаю его несколько раз в секунду.

Есть ли что-то особенное, что мне нужно или какое-то конкретное значение мне нужно увеличить, чтобы заставить PerformanceCounter показать что-то?

Фигурные его

Я положил пример использования этого счетчика в ответ ниже. Спасибо за помощь, ребята!

ответ

1

Вот пример, который сработал для меня.

class Program 
{ 
    const string CategoryName = "____Test Category"; 
    const string CounterName = "Clear State Operations"; 

    static void Main(string[] args) 
    { 
     if (PerformanceCounterCategory.Exists(CategoryName)) 
      PerformanceCounterCategory.Delete(CategoryName); 

     var counterDataCollection = new CounterCreationDataCollection(); 

     var clearStateCounterData = new CounterCreationData() 
     { 
      CounterName = CounterName, 
      CounterHelp = "The number of times the service state has been cleared since the last performance iteration", 
      CounterType = PerformanceCounterType.CounterDelta32 
     }; 
     counterDataCollection.Add(clearStateCounterData); 

     PerformanceCounterCategory.Create(CategoryName, "Test Perf Counters", PerformanceCounterCategoryType.SingleInstance, counterDataCollection); 

     var counter = new PerformanceCounter(CategoryName, CounterName, false); 

     for (int i = 0; i < 5000; i++) 
     { 
      var sw = Stopwatch.StartNew(); 
      Thread.Sleep(10300); 
      sw.Stop(); 

      counter.Increment(); 
     } 

     Console.Read(); 
    } 
} 
0

Этого недостаточно для создания счетчика ... согласно документации, вам необходимо создать PerformanceCounterCategory и создать экземпляр PerformanceCounter. Проверьте образец в MSDN: http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx

+0

Да, я сделал все это. Счетчик появляется в моей категории. Кажется, я просто не могу отображать значения, увеличивая счетчик. Я предполагаю, что counter.Increment это неправильная вещь или единственное, что мне нужно вызвать в этом случае, но я не вижу никаких примеров для этого типа счетчика. –

0

Как только вы создаете счетчик (используя CounterCreationData и Create в PerformanceCounterCategory), а затем создайте экземпляр счетчика (используя PerformanceCounter), вам нужно инициализировать значение счетчика для получения экземпляр начался в Performance Monitor.

Кроме того, убедитесь, что вы создаете счетчик в режиме чтения-записи (передавая false аргументу readOnly).

Вы можете попробовать установить RawValue = RawValue или RawValue = 0, чтобы запустить его и посмотреть, появляется ли он.

Смежные вопросы