Я хочу получить данные о производительности процессора в режиме реального времени, включая температуру.я использовал следующий код для получения температуры процессора:
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject queryObj in searcher.Get())
{
double temp = Convert.ToDouble(queryObj["CurrentTemperature"].ToString());
double temp_critical = Convert.ToDouble(queryObj["CriticalTripPoint"].ToString());
double temp_cel = (temp/10 - 273.15);
double temp_critical_cel = temp_critical / 10 - 273.15;
lblCurrentTemp.Text = temp_cel.ToString();
lblCriticalTemp.Text = temp_critical_cel.ToString();
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
, но этот код показывает температуру, которая не является правильной.Обычно он показывает 49,5-50,5 градусов по Цельсию.Но я использовал «OpenHardwareMonitor», который сообщает о температуре процессора выше 71 градуса по Цельсию и изменяет дроби вместе с долями времени.есть ли что-то, чего мне не хватает в коде?
Я использовал вышеуказанный код в событии timer_click для каждого интервала 500 мс, чтобы обновить показания температуры, но он всегда показывает одну и ту же температуру с начала выполнения.Это означает, что если вы запустите это приложение, и если оно покажет 49 градусов, то после 1-часового сеанса оно будет постоянно показывать 49 градусов.Где проблема?