当我显示所有PerformanceCounterCategories
的列表时,我会收到一份荷兰语列表,因为这是我的操作系统语言。是否可以检索英文列表?
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();
}
编辑: 除此之外,是否有可能的类别列表及其在线计数器?我一直在寻找高低,并没有偶然发现一个真实的清单。
到目前为止,我发现的唯一一件事就是this文章,它引出了一系列类别。 但是,由于它没有提供关于类别本身的任何信息,我已经收到一个例外,说明当我使用时该类别不存在
var temp = new PerformanceCounterCategory("IP");
Console.WriteLine(temp.CategoryHelp);
答案 0 :(得分:2)
由于它显然使用Thread.CurrentCulture
,您无法指定用于检索所有内容的语言。可能可以安装英语语言包并更改您的CurrentCulture
,但我没有遵循可能性。
相反,有英语操作系统的人向我提供了上面result的代码,我将使用它作为硬编码英语类别的参考,而不是荷兰语。英语似乎对我来说很好,所以我猜它是每台机器上的标准。
我还没有找到有关类别的实际文档,但通过使用常识,我能够将these technet文章与上面链接列表中显示的相应类别结合起来。
确保其有效的示例:
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上的文档仅将类别指定为“IP对象”而不区分“IPv4”和“IPv6”。
如果某人确实找到了解决原始问题的可靠方法(尽管主机系统的偏好显示所有英文类别),只需将其添加为答案,我会接受。
编辑:
通过更改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);
}