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);
}