Что означают временные поля в CounterSample?

У меня есть экземпляр PerformanceCounter, Я звоню NextSample() на это и получить CounterSample, В нем есть несколько связанных со временем полей: CounterFrequency, SystemFrequency, CounterTimeStamp, Timestamp и TimeStamp100nSec.

На странице MSDN для CounterSample есть только "Получает необработанную частоту счетчика" и аналогичные бесполезные описания, а также пример, который печатает значение без объяснений.

  • Что это значит именно?
  • В каких единицах они находятся? Я перепробовала все DateTime.FromX() функции, но ни один не дает разумного результата.

1 ответ

Решение
(sample2.Timestamp - sample1.Timestamp) / sample2.SystemFrequency = elapsed seconds

(sample2.TimeStamp100nSec - sample1.TimeStamp100nSec) / 10000000 = elapsed seconds

Я смог перепроектировать это, когда анализировал, как LOGMAN.EXE будет считывать счетчики перфектов и сохранять их в базе данных SQL. Класс CounterSample (из различных разборок) оборачивает эту структуру C

PDH_RAW_COUNTER

В этой структуре C SecondValue имеет TimeStamp или TimeStamp100nSec в зависимости от типа счетчика. К тому времени, когда он будет упакован в структуру.NET CounterSample, вы можете получить либо через свойства.

Другие вопросы по тегам