2013-07-09 8 views
1

Когда я показываю список всех PerformanceCounterCategories, я получаю список на голландском языке, так как это язык моей ОС. Можно ли получить английский список?Retrieve 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(); 
} 

Edit: Добавление к этому, есть список возможных категорий и их счетчиков в Интернете? Я искал высоко и низко и еще не наткнулся на фактический список.

До сих пор единственное, что я нашел, - это статья this, которая приводит к списку категорий. Однако, поскольку он не дает никакой информации о самой категории, я уже получил исключение с указанием категории не существует, когда я использую

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

Он выбирается Thread.CurrentCulture. Не возлагайте надежды. –

+0

Возможно, я приближаюсь с неправильного направления. В принципе, я хочу посмотреть «счетчики» некоторых «категорий», чтобы увидеть, есть ли интересная информация для отображения в моей программе. Сейчас я использую только данные из категории «Сетевой интерфейс». Я хотел отобразить все (английские) названия категорий, чтобы я мог выбрать из этого списка и посмотреть, какие значения я могу получить. Должен ли я подходить к этому по-другому? –

ответ

2

Поскольку appearantly использует Thread.CurrentCulture вы не можете указать язык для извлечения всего. Возможно, вы сможете установить пакет английского языка и изменить свой CurrentCulture, но я не следовал этой возможности.

Вместо этого, кто-то с английской ОС предоставил мне его result вышеприведенного кода, и я буду использовать это как ссылку на категории жесткого кода на английском языке, а не на голландский. Кажется, что английский работает отлично для меня, поэтому я предполагаю, что он стандартный на каждой машине.

Я пока не нашел фактическую документацию по категориям, но с помощью здравого смысла мне удалось совместить these технотехнических статей с соответствующей категорией, как показано в списке, указанном выше.

пример, чтобы убедиться, что он работает:

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 '.

Если кто-то действительно находит надежный способ исправить исходную проблему (отображая все категории на английском языке, несмотря на предпочтения хост-системы) просто добавьте его в качестве ответа, и я соглашусь с этим.

Edit: Решение путем изменения 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); 
      } 
Смежные вопросы