Я пытаюсь использовать класс C# PerformanceCounter для возврата системных показателей.Bytes Received всегда возвращается 0
// Initialisation
// Threads (total threads for all processes)
PerformanceCounter performThreads = new System.Diagnostics.PerformanceCounter();
((ISupportInitialize)(performThreads)).BeginInit();
performThreads.CategoryName = "System";
performThreads.CounterName = "Threads";
((ISupportInitialize)(performThreads)).EndInit();
// Bytes received (cumulative total bytes received over all open socket connections)
private PerformanceCounter m_pcSys_BytesSent;
PerformanceCounter performBytesR = new System.Diagnostics.PerformanceCounter();
((ISupportInitialize)(performBytesR)).BeginInit();
performBytesR.CategoryName = ".NET CLR Networking";
performBytesR.CounterName = "Bytes Received";
performBytesR.InstanceName = "_global_";
((ISupportInitialize)(performBytesR)).EndInit();
// Later on ... periodically poll performance counters
long lThreads = performThreads.RawValue; // Works!
long lBytesR = performBytesR.RawValue; // Always returns 0 :o(
Последняя строка выше работ, в том смысле, что он не бросает исключение, но всегда возвращает 0.
Я попытался как NextSample
и NextValue
с тем же результатом. Если я изменю InstanceName
на имя процесса, я снова получаю тот же результат. Если InstanceName
настроено на что-либо еще, исключение Instance 'XYZ' does not exist in the specified Category.
бросается, когда я звоню RawValue
.
Любые идеи?
Используйте сниффер, как скрипач или проводов, чтобы проверить, что данные отправляются/принимаются по сети. – jdweng
@AlainD: Если вы собираетесь собирать показатели уровня системы, см., Если [Statsify] (https://bitbucket.org/aeroclub-it/statsify) соответствует вашим потребностям. –
@jdweng: данные, безусловно, отправляются/принимаются, потому что я подключен к различным серверам с помощью сокетов Windows. Я могу подсчитать байты, отправляемые и полученные вручную (и они отличные от нуля). Проблема заключается в том, что счетчики производительности сети .NET должны быть специально активированы в соответствии с ответом Антона. – AlainD