こんにちは私はすべての"ネットワークカテゴリ" / "" 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
代わりに。