1

すべての のリストを表示するとPerformanceCounterCategories、OS の言語がオランダ語であるため、オランダ語のリストが表示されます。英語のリストを取得することはできますか?

private static void Main(string[] args) {
        var cats = new List<PerformanceCounterCategory>(PerformanceCounterCategory.GetCategories());

        foreach (var name in cats.OrderBy(x => x.CategoryName)) {
            Console.WriteLine(name.CategoryName);
        }

        Console.ReadKey();
}

編集:これに加えて、可能なカテゴリとそのカウンターのリストがオンラインにありますか? 私は高低を検索してきましたが、まだ実際のリストに出くわしていません.

これまでのところ、カテゴリのリストにつながるこの記事しか見つかりませんでした。ただし、カテゴリ自体に関する情報は提供されないため、使用時にカテゴリが存在しないという例外を既に受け取りました

var temp = new PerformanceCounterCategory("IP");
Console.WriteLine(temp.CategoryHelp);
4

1 に答える 1

2

Thread.CurrentCulture英語の言語パックをインストールして変更することは可能かもしれませんが、CurrentCulture私はその可能性を追っていません。

代わりに、英語の OS を使用している誰かが上記のコードの結果を私に提供してくれました。これを、オランダ語ではなくハードコードされた英語のカテゴリへの参照として使用します。英語は私にとってはうまく機能しているように見えるので、すべてのマシンで標準になっていると思います。

カテゴリに関する実際のドキュメントはまだ見つかりませんが、常識を働かせて、上記のリンクのリストに表示されているように、これらのテクネットの記事を適切なカテゴリと組み合わせることができました。

動作を確認する例:

 var temp = new PerformanceCounter("IPv4", "Datagrams/sec");
 console.WriteLine(temp.CategoryName);

 while (true) {
      float total = 0;
      for (var i = 0; i < 10; i++) {
              total += temp.NextValue();
      }
      Console.WriteLine(total);
      Thread.Sleep(1000);
 }

Technet のドキュメントでは、「IPv4」と「IPv6」を区別せずにカテゴリを「IP オブジェクト」としか指定していませんが、安定したデータ ストリームを提供してくれます。

誰かが実際に元の問題 (ホスト システムの設定に関係なく、すべてのカテゴリを英語で表示する) を修正する確実な方法を見つけた場合は、それを回答として追加してください。代わりにそれを受け入れます。

編集: を変更することによる解決策CurrentCulture:

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
            var cats = new List<PerformanceCounterCategory>(PerformanceCounterCategory.GetCategories());
            foreach (var name in cats.OrderBy(x => x.CategoryName)) {
                Console.WriteLine("en-US: " + name.CategoryName);
            }

            System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("nl-NL");
            cats = new List<PerformanceCounterCategory>(PerformanceCounterCategory.GetCategories());
            foreach (var name in cats.OrderBy(x => x.CategoryName)) {
                Console.WriteLine("nl-NL: " + name.CategoryName);
            }
于 2013-07-10T15:21:28.847 に答える