8
.NETパフォーマンスカウンタを使用して、特定のプロセスのCPU、メモリ、ネットワークの使用状況を取得するプログラムを作成しています。特定のプロセスのネットワークパフォーマンスを監視します。
は例えば、Explorer
のためにCPUとメモリのデータを取得するために、私はこのようなパフォーマンスカウンタを作成します。
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でネットワーク全体の使用状況を取得できますが、特定のプロセスにネットワークを使用することはできません。
以前に似たようなものがあるようです:http://stackoverflow.com/questions/438240/monitor-a-processs-network-usage – Dilshod
これはアーキテクチャ上の制限です。これらのカウンタは、ネットワークドライバスタックによって実装されます。カーネルモードで動作するので、usermodeプロセスの認識はありません。 FileSystemWatcherがファイルを変更したプロセスを教えてくれないのと同じ理由があります。 –