0

ブラウザのネットワーク接続を監視するために、c#でperformanceCounterを作成しようとしています。

ブラウザのinstanceNameを検索するためのリストを表示すると、これはCounterPerformance ".NET CLRNetworking4.0.0.0"によって監視されません...

カウンターを作成します:

bytesSent = new PerformanceCounter();
bytesSent.CategoryName = ".NET CLR Networking 4.0.0.0";
bytesSent.CounterName = "Bytes Sent";
bytesSent.InstanceName = instanceName; // instanceName of my browser.
bytesSent.ReadOnly = true;

そして、監視されているインスタンスのリストを表示します。

PerformanceCounterCategory category = new PerformanceCounterCategory(".NET CLR Networking 4.0.0.0");

string[] listMonitoredApplication = category.GetInstanceNames();
foreach (string monitoredInstanceName in listMonitoredApplication)
{
    Console.WriteLine(" - " + monitoredInstanceName);
}

私は1秒ごとにperformanceCounterのリストを表示しますが、リストには次のようなものがあります。

- myApplicationInstanceName
- _global_

私のブラウザPerformanceCounterが作成されなかった理由を知っていますか?

ありがとうございました。

4

1 に答える 1

0

これは、ブラウザがデータの転送に.NETFrameworkクラスを使用していないためです。ブラウザはネイティブコードを使用します。

「ネットワークインターフェイス」カテゴリのような、別のパフォーマンスカウンターを使用する必要があります。tcp / ipドライバースタックが個々のプロセスの統計を保持せず、特定のネットワークインターフェイスについてのみ保持するというしわが追加されました。そのための回避策はありません。

于 2012-10-23T17:52:21.077 に答える