首页 程序笔记 C#中如何通过代码获取当前机器CPU的温度

C#中如何通过代码获取当前机器CPU的温度

问题描述

有时候,我们需要为应用程序收集一些系统的信息,使用C#很容易获得可用内存和CPU负载之类的信息,但不幸的是,CPU温度不是那么容易,之前也尝试使用WMI,但无法获取。

问题解决

Open Hardware Monitor

Open Hardware Monitor是一款免费的开源软件,可监测温度传感器、风扇速度、电压、负载和计算机时钟速度。Open Hardware Monitor支持当今主板上的大多数硬件监控芯片。CPU温度可以通过读取Intel和AMD处理器的核心温度传感器进行监测。可以显示ATI和Nvidia视频卡的传感器以及SMART硬盘温度。监视的值可以显示在主窗口、可自定义的桌面小工具或系统托盘中。免费Open Hardware Monitor软件在32位和64位Microsoft Windows XP/Vista/7/8/8.1/10以及任何基于x86的Linux操作系统上运行,无需安装。网址:https://openhardwaremonitor.org/
同时Open Hardware Monitor还提供了C#的动态库可以使用,在C#中我们可以借助这个动态库来获取CPU的问题。

如何使用?

通过nuget安装

在工程的nuget包管理中搜索OpenHardwareMonitor,安装如下图所示的包即可:

使用参考代码

首先新建一个C#类CpuTemperatureReader:

internal sealed class CpuTemperatureReader : IDisposable
{
    private readonly Computer _computer;

    public CpuTemperatureReader()
    {
        _computer = new Computer { CPUEnabled = true };
        _computer.Open();
    }

    public IReadOnlyDictionarystring, float GetTemperaturesInCelsius()
    {
        var coreAndTemperature = new Dictionarystring, float();

        foreach (var hardware in _computer.Hardware)
        {
            hardware.Update(); //use hardware.Name to get CPU model
            foreach (var sensor in hardware.Sensors)
            {
                if (sensor.SensorType == SensorType.Temperature  sensor.Value.HasValue)
                    coreAndTemperature.Add(sensor.Name, sensor.Value.Value);
            }
        }

        return coreAndTemperature;
    }

    public void Dispose()
    {
        try
        {
            _computer.Close();
        }
        catch (Exception)
        {
            //ignore closing errors
        }
    }
}

调用示例:

public static void Main()
{
    while (true)
    {
        CpuTemperatureReader ctr = new CpuTemperatureReader();
        var ts = ctr.GetTemperaturesInCelsius();
        foreach (var t in ts)
        {
              Console.WriteLine({0}-{1} ℃, t.Key, t.Value);
        }
       Thread.Sleep(1000);
    }
}

以上代码每个1秒中更新获取一次CPU的问题并打印出来,运行结果示例如下:

CPU Core #1-95 ℃
CPU Core #2-91 ℃
CPU Core #3-89 ℃
CPU Core #4-93 ℃
CPU Core #5-83 ℃
CPU Core #6-88 ℃
CPU Package-95 ℃
CPU Core #1-96 ℃
CPU Core #2-91 ℃
CPU Core #3-89 ℃
CPU Core #4-94 ℃
CPU Core #5-87 ℃
CPU Core #6-89 ℃
CPU Package-97 ℃

以上就是获取到的每个核心的问题和CPUPackage的温度值。

注:这个程序需要已管理员身份运行,否则可能会获取失败。

2

站星网

问题描述 有时候,我们需要为应用程序收集一些系统的信息,使用C#很容易获得可用内存和CPU负载之类的信息,..

为您推荐

《一个程序猿的生命周期》-《发展篇》- 49.从写代码、到开发软件产品、再到开拓前端市场,2025年是转型关键的一年

已然工作了19个年头,从2006年毕业,干了1年设备安装及维护的工作(2006年~2007年),尽管当时很辛苦,但是奠定了现在做事的品格与韧性;干了18年(2007年~2025年)的软件开发、项目实施及管理团队相关工作,期间出..

TikTok玩具赛道惊现“爆单机器”,28天成交63700单!

来源:TT123跨境电商作者:TT123跨境电商每年的 11 月底至圣诞节期间,北美地区流行举办“白象礼物交换派对”(White Elephant Gift Exchange),派对的核心规则就是相互赠送无用、古怪、令人发笑的礼物以活跃气氛。..

代码管理平台全景解析:从新手到企业级开发的最佳实践

在数字化转型浪潮中,代码管理工具已成为开发者必备的"生产工具"。无论是个人开发者还是企业团队,选择合适的代码管理平台不仅能提升开发效率,更能为项目协作与代码安全保驾护航。本文将深入剖析Gitee、Git、GitHub..

代码照进现实:对公司管理策略的技术性解构

上学的时候觉得计算机专业的一些理论晦涩难懂,跟现实世界的关联太少,每当遇到一些精妙的设计时都会发出一种感叹:究竟是什么脑袋才能想出这么有意思的东西。一晃工作十年,阅历渐丰,隐约发现其实社会中的一些现象..

编写优秀 CSS 代码的 8 个策略

编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一。然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性。我认为这主要是因为许多开发人员对组织CSS / HTML和JavaScript的策..

天天写业务代码,如何成为技术大牛?

不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己。然而"梦想是美好的,现实却是残酷的",很多..

记我经历的一次公司破产经历,一行代码害死一家公司

前言这是一篇亲身经历的真实记录,事情发生在2010年。狗血剧情一再上演,使我的程序员生涯变得跌宕起伏,也从中学到了很多。在写这篇文章之前,我还专门去查了这家公司的资料。有如下事实:1.官网已经打不开了。2.天..

如何处理前任程序员留下的代码

作为软件工程师不可避免会遇到的一个场景是:我们在改变或添加一个功能到不是我们创建的、我们不熟悉的、与我们负责的系统部分无关的代码中时,会遇到麻烦。虽然这可能会是一个繁琐而艰巨的任务,但是由于使用其他开..

值得探索的 8 个机器学习 JavaScript 框架

JavaScript开发人员倾向于寻找可用于机器学习模型训练的JavaScript框架。下面是一些机器学习算法,基于这些算法可以使用本文中列出的不同JavaScript框架来模型训练:简单的线性回归多变量线性回归逻辑回归朴素贝叶斯..

对码农而言什么样的代码才能叫做好代码?

好的代码,就像是好的笑话——无需解释就能让别人明白。如果你的代码能够做到不解自明,在大多数时候,你根本无需为其配备说明文档。好的代码,就像是一辆配备了优秀音响和杯架的汽车,这辆车在行驶到最高速度的时候..

当一个程序员写不出代码了,该怎么办?

你已经对着电脑n个小时了。不知道该写什么代码,或者一种摔键盘的冲动正在你的胸中酝酿。咖啡一杯接着一杯。不敢再喝了,因为搞不好要有副作用了,心跳加速,身体不由自主地颤抖,出冷汗,但还是无法产出任何代码。..

.net 通过 HttpClient 下载文件同时报告进度的方法

通过 HttpClient 的 ContentLength 很多时候都可以拿到下载的内容的长度,通过 ReadAsync 可以返回当前读到的长度,将读取到的长度加起来就是已经下载的长度看起来很简单,于是直接给代码private static async Task ..

mysql随机获取一条或者多条数据

语句一:select * from users order by rand() LIMIT 1MYSQL手册里面针对RAND()的提示大概意思就是,在 ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描,导致效率相当相当的低,效率不行,切..

ASP.NET如何将Views文件夹从项目分离

将 Views 文件夹从 ASP.NET 项目中分离是一个常见需求,比如为了实现模块化或分层架构。以下是实现此功能的完整步骤,从项目中分离 Views 文件夹,将其移到另一个独立的文件夹或项目中,并确保视图渲染仍然正常。1. ..

ASP.NET MVC最常用的设计模式代码示例

ASP.NET MVC 是一个基于分层架构的框架,其核心架构本身已经实现了 MVC 模式(Model-View-Controller)。除了 MVC 模式,开发者在使用 ASP.NET MVC 开发应用时,通常会结合其他设计模式以提高代码的可维护性、可扩展..

如何让AI写出Google认可的文章?

让 AI 写出 Google 认可的文章,核心在于满足 Google 的搜索排名算法要求。这些要求通常围绕以下几个关键点展开:内容质量、用户体验 和 SEO 优化。以下是详细指导:一、内容质量确保文章原创且有价值避免抄袭:Goog..

EntityFramework SQLite 为时间字段设置默认值为当前时间

在使用 Entity Framework Core 和 SQLite 时,可以通过以下步骤为时间字段设置默认值为当前时间:方法一:在模型配置中设置默认值你可以在 DbContext 的 OnModelCreating 方法中,通过 Fluent API 配置默认值:prote..

如何从.NET Framework迁移到.NET Core或.NET 6/7?

从 .NET Framework 迁移到 .NET Core 或 .NET 6/7 是一个提升性能和跨平台能力的关键过程。以下是迁移的主要步骤和注意事项:迁移步骤1. 评估当前项目依赖项检查:确保所有第三方库和NuGet包都有与 .NET Core/.NET 6..

如何优化ASP.NET Core应用的性能?

优化ASP.NET Core应用性能需要从代码、数据库、配置、服务器和部署等多个层面进行综合考虑。以下是一些优化ASP.NET Core应用性能的关键方法和技巧:1. 代码级优化使用异步编程:避免阻塞线程,通过async和await处理I..

10款.NET开发中推荐的代码分析和质量工具

以下是10款.NET开发中常用的代码分析和质量工具列表,以及它们的主要功能和使用场景:1. SonarQube简介:一个流行的开源静态代码分析平台,用于检测代码中的漏洞、错误、技术债务等问题。主要功能:支持代码质量监测..

发表回复

返回顶部

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制
星辰影视-2025热门免费影视短剧平台熊猫影视-2025热门免费影视短剧平台番茄影视-2025热门免费影视短剧平台星光电影-2025热门免费影视短剧平台蜂鸟影院-2025热门免费影视短剧平台熊猫影视 - 全网高清免费影片聚合平台萝卜影院-2025热门电影电视剧免费在线播放-全站无广告高速播放下载樱花影院-2025热门免费影视短剧平台琪琪影视-2025热门免费影视短剧平台火影电影网-2025热门免费影视短剧平台悟空电影-2025热门免费影视短剧平台西瓜影院-2025热门免费影视短剧平台星空电影网-2025热门免费影视短剧平台好看电影网-2025热门免费影视短剧平台无忧影视网_高清影视在线观看分享平台_最新最全的免费影视短剧大全年钻网超清视界 - 全网高清免费短剧聚合平台极影公社-2025热门电影电视剧免费在线播放至尊影院-最新热门短剧免费电影网站_高清影视无弹窗极速播放星光电影-2025热门免费影视短剧平台河马影视-最新热门火爆的免费影视网站_高清影视夸克迅雷网盘下载叮当影视网-2025热门高清免费影视短剧分享平台70影视网 - 最新电影、电视剧、短剧、免费在线观看麻花影视网 - 高清免费聚合电影网西瓜影院-最新热门电影电视剧免费在线播放开心追剧网2048影视资源论坛-2048P.Com青青影视网-2025热门高清免费影视短剧分享平台八哥电影网_最新vip电影大全_热播电视剧_全网优质影视免费在线观看_老牌的免费在线影院_www.886958.com人人看电影-热播电视剧_2025年最新电影_人人影院高清在线免费观看天天影视网-高清免费电影、电视剧、短剧在线观看星辰影视-最新热门无广告的免费电影网站_高清影视无弹窗极速播放电影天堂爱看影院追剧达人U系列网盘资源橙子影视网天堂影视网天堂影视神马影院网大众影视网星辰影视网