2016-12-03 5 views
0

Я пытаюсь получить NextValue класса PerformanceCounter, используя PhysicalDisk. Некоторая причина, по которой я не могу понять, почему, она возвращает 0 каждый раз.NextValue() return 0

PerformanceCounter pcDiskTime = new PerformanceCounter("PhysicalDisk", "% Disk Time", "_Total"); 
    Single sinDisk = pcDiskTime.NextValue(); //returns 0.0 

Используя выше и вызывая pcDiskTime.NextValue возвращение 0-х. У меня есть другие счетчики, которые отлично работают и возвращают то, что мне нужно.

.RawValue действительно возвращает что-то, но это не значение, которое мне нужно. Есть ли что-то очевидное, чего я не делаю?

Примечание: Я проверял через Performance Monitor, это действительно правильная категория, имя счетчика и имя экземпляра. Я также пытался позвонить .NextValue() дважды, как иногда первый возврат 0.0, но это не поможет.

+0

MSDN: 'Если вычисленное значение счетчика зависит от двух счетчиков, первая операция чтения возвращает 0.0. 'Если вы каждый раз создаете новый счетчик, NextValue всегда будет первым вызовом (не уверен, что это тот, который зависит от 2-х прочитанных) – Plutonix

+0

@Plutonix хорошая точка, некоторые из моих других счетчиков требуют двух чтений, я попробовал это ; забыл упомянуть об этом в моем посте. Я буду обновлять, спасибо за предложение. – Codexer

ответ

3

Первый раз он будет возвращать ноль, потому что нет предыдущего значения для сравнения, как показано ниже.

PerformanceCounter pcDiskTime = new PerformanceCounter("PhysicalDisk", "% Disk Time", "_Total"); 
//first time call 
float perfCounterValue = pcDiskTime.NextValue(); 
//wait some time 
System.Threading.Thread.Sleep(1000); 
//get the value again 
perfCounterValue = pcDiskTime.NextValue(); 

Если расчетное значение счетчика зависит от того, два счетчика читает, первая операция чтения возвращает 0.0. Сброс счетчика производительности Свойства для задания другого счетчика эквивалентны созданию нового счетчика производительности , а первая операция чтения с использованием новых свойств возвращает 0.0. Рекомендуемое время задержки между вызовами . Метод NextValue составляет одну секунду, чтобы позволить счетчику выполнить следующее пошаговое чтение.

+0

А, спал нить! Я не могу поверить, что спал, это была нить, она не вызывала его дважды, как я это делал, просто не спал нить. Спасибо! – Codexer

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

  • Нет связанных вопросов^_^