Ich möchte CPU-Leistungsdaten in Echtzeit einschließlich Temperatur abrufen. Ich habe den folgenden Code verwendet, um CPU-Temperatur zu erhalten:
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);
}
aber dieser Code zeigt die Temperatur an, die nicht die richtige Temperatur ist. Normalerweise zeigt er 49,5-50,5 Grad Celsius an. Aber ich habe "OpenHardwareMonitor", die CPU-Temperatur über 71 Grad Celsius und wechselnde Fraktionen zusammen mit Zeit Fraktionen Bericht. gibt es etwas, das ich in dem Code fehlt?
Ich habe den obigen Code im timer_click-Ereignis für alle 500ms Intervall verwendet, um die Temperaturanzeige zu aktualisieren, aber es zeigt immer die gleiche Temperatur vom Beginn der Ausführung. Das bedeutet, wenn Sie diese Anwendung ausführen und wenn es 49 Grad zeigt dann nach 1 Stunde Sitzung, es wird ständig zeigen 49 Grad. Wo liegt das Problem?