/ /指定されたカテゴリ名 'Network Interface'でパフォーマンスカウンタを見つけることができませんでした。 - c#

特定のカテゴリ名 'Network Interface'を持つパフォーマンスカウンタを見つけることができませんでした。 - c#

こんにちは私はすべての"ネットワークカテゴリ" / "" Bytes Total / sec "にあるC#のパフォーマンスカウンタを使用して、インスタンス名の1回ごとにNextValueを取得しますが、インスタンス名が見つからないというエラーが表示されます。以下のコードを使用します。まず、次のコードを使用して特定のカテゴリのすべてのパフォーマンスカウントを作成し、インスタンス名ごとに異なるパフォーマンスカウンタを作成します。

NetworkPerformanceCounterArray = new PerformanceCounter[NetowrkInstanceNames.Length];
foreach (var instance in NetowrkInstanceNames)
{
Console.WriteLine(instance);
NetworkPerformanceCounterArray[tmpind] = new PerformanceCounter();
NetworkPerformanceCounterArray[tmpind].CategoryName = "Network Interface";
NetworkPerformanceCounterArray[tmpind].CounterName = "Bytes Total/sec";
NetworkPerformanceCounterArray[tmpind].CounterName = instance;
tmpind++;
}

しかし、私がラインを使うとき次の値を取得するためのNetworkPerformanceCounterArray [i] .NextValue()任意のインスタンスの例外を取得しました(例:指定したカテゴリ名 "ネットワークインターフェイス"、カウンタ名 "Atheros AR8121_AR8113_AR8114 PCI-E Ethernet Controller ")。

奇妙なことに、インスタンス名は正しい。たとえば、名前をハードコーディングして「Atheros AR8121_AR8113_AR8114 PCI-E Ethernet Controller」のパフォーマンスカウンタを1つだけ作成すると、正常に動作します。奇妙なことに、インスタンス名 "Atheros AR8121_AR8113_AR8114 PCI-E Ethernet Controller"はどちらの場合もまったく同じです。毎回コピー貼り付けとダブルチェックを使用しています。

誰かが物事を明確にしてもらえますか?

回答:

回答№1は0

ああ。ちょうど気付いた

NetworkPerformanceCounterArray[tmpind].CounterName = "Bytes Total/sec";
NetworkPerformanceCounterArray[tmpind].CounterName = instance;

あなたは同じ要素を使用しています(CounterName)を2回繰り返す。私は2行目が使うべきだと思います InstanceName 代わりに。