由于它看起来使用Thread.CurrentCulture
您无法指定检索所有内容的语言。可能可以安装英语语言包并更改您的CurrentCulture
.,但我没有遵循这种可能性。
相反,使用英语操作系统的人向我提供了上面代码的结果,我将使用它作为硬编码英语类别的参考,而不是荷兰语。英语对我来说似乎工作得很好,所以我猜它是每台机器的标准。
我还没有找到关于这些类别的实际文档,但是通过使用常识,我能够将这些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);
}