2016-12-03 1 views
0

PhysicalDisk을 사용하여 PerformanceCounter 클래스의 NextValue을 얻으려고합니다. 이유를 알 수없는 몇 가지 이유가 있으며, 매번 0을 반환합니다.NextValue() 반환의 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

비교할 이전 값이 없기 때문에 처음으로 0을 반환합니다. 아래에서와 같이 비교하십시오. 카운터의 산출 값이 카운터 판독에 따라 두 가지 경우

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(); 

는 제 1 판독 동작이 0.0를 반환한다. 성능 카운터를 다시 설정하면 다른 카운터를 지정하는 속성은 새 성능 카운터를 만드는 것과 동일하며 새 속성을 사용하는 첫 번째 읽기 작업은 0.0을 반환합니다. NextValue 메서드 호출 사이의 권장 지연 시간은 카운터가 다음 증분 읽기 을 수행 할 수 있도록하는 1 초입니다.

+0

아, 스레드 자고있어! 나는 실을 자고 있다고 믿을 수 없다. 나는 이것을 한 것처럼 두 번이나 부르지 않았고, 실을 자지 않았다. 고맙습니다! – Codexer

관련 문제