8

.NET パフォーマンス カウンターを使用して、特定のプロセスの CPU、メモリ、およびネットワークの使用状況を取得するプログラムを作成しています。

たとえば、 の CPU とメモリのデータを取得するにはExplorer、次のようなパフォーマンス カウンターを作成します。

PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "% Processor Time";
PC.InstanceName = "Explorer";

PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "Process";
PC.CounterName = "Working Set - Private";
PC.InstanceName = "Explorer";

残念ながら、そのプロセスのcategoryNameネットワーク使用状況を取得できるプロセスのプロパティはありません。ネットワーク インターフェイスcategoryNameを使用して、特定の NIC のネットワーク全体の使用状況を取得できますが、特定のプロセスに分離することはできません。

4

1 に答える 1

0

システム全体のネットワーク使用量しか取得できないと思います。次のコードを使用できます。

GetCounterValue(_netRecvCounters[index], "Network Interface", "Bytes Received/sec",      _instanceNames[index]):

double GetCounterValue(PerformanceCounter pc, string categoryName, string counterName, string instanceName)
{
    pc.CategoryName = categoryName;
    pc.CounterName = counterName;
    pc.InstanceName = instanceName;
    return pc.NextValue();  
}

PerformanceCounters を使用すると、Microsoft がアクセスできるようにしたい値のみを取得できます。

于 2013-04-25T12:18:53.180 に答える