相关疑难解决方法(0)

MSAcpi_ThermalZoneTemperature 类未显示实际温度

我想实时获取 CPU 性能数据,包括温度。我使用以下代码来获取 CPU 温度:

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);
        }
Run Code Online (Sandbox Code Playgroud)

但此代码显示的温度不是正确的温度。它通常显示 49.5-50.5 摄氏度。但我使用了“OpenHardwareMonitor”,它报告 CPU 温度超过 71 摄氏度,并且随着时间分数的变化而变化。我在代码中遗漏了什么吗?

我在 timer_click 事件中每隔 500 毫秒使用上面的代码来刷新温度读数,但从执行开始它总是显示相同的温度。这意味着如果您运行此应用程序并且它显示 …

c#

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1