#c# #performance #int #counter
#c# #Производительность #int #счетчик
Вопрос:
У меня возникает ошибка, когда я пытаюсь отобразить текущее использование процессора и памяти с помощью индикатора выполнения. Код кажется правильным, поскольку он работает с меткой, но я получаю сообщение об ошибке «Не удается преобразовать в int», так как я могу преобразовать данные счетчика производительности в int, чтобы их можно было отобразить в индикаторе выполнения? Я пытался использовать System.Convert.ToInt32(cpuCounter);
, но у меня ничего не получилось. Вот мой код:
PerformanceCounter ramCounter;
ramCounter = new PerformanceCounter("Memory", "Available MBytes");
ramCounter.NextValue();
progressBar1.Value = ramCounter;
PerformanceCounter cpuCounter;
cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% Processor Time";
cpuCounter.InstanceName = "_Total";
cpuCounter.NextValue();
progressBar2.Value = cpuCounter;
Спасибо!
Ответ №1:
Вам нужен результат PerformanceCounter.NextValue()
— в данный момент вы его игнорируете:
float value = cpuCounter.NextValue();
progressBar2.Value = (int) value;
Конечно, вы захотите проверить диапазон ожидаемых значений — возможно, вам захочется его масштабировать.
Другим вариантом является использование RawValue
свойства, которое является long
.
Комментарии:
1. Отлично! Спасибо. Вы правы, мне действительно нужно масштабировать выходные данные, но я понятия не имею, как это сделать: (Есть идеи? 🙂
2. @Shadowalker: Вам нужно было бы предоставить нам больше информации — в основном, определите, каким должен быть диапазон выходных данных, каков диапазон входных данных, а затем соответствующим образом умножьте и добавьте.
Ответ №2:
Вы должны назначать не экземпляр счетчика производительности вашему индикатору выполнения, а его значение. Само значение равно Int64.
progressbar1.Value = (Int32) ramCounter.RawValue;
Ваш,
Alois Kraus