在C#中讀取CPU、硬盤和內(nèi)存溫度的完整代碼
前言
系統(tǒng)監(jiān)控工具或性能分析應(yīng)用時(shí),實(shí)時(shí)獲取硬件信息(如 CPU、硬盤和內(nèi)存的溫度)是一個(gè)常見且重要的需求。然而,.NET Framework 或 .NET Core 并未提供直接訪問(wèn)硬件溫度的內(nèi)置支持。為了實(shí)現(xiàn)這一功能,我們可以借助開源庫(kù) Open Hardware Monitor 來(lái)完成硬件信息的讀取。
本文將詳細(xì)介紹如何在 C# 項(xiàng)目中集成并使用 Open Hardware Monitor 庫(kù),以實(shí)現(xiàn)對(duì) CPU、硬盤以及內(nèi)存溫度的監(jiān)控,并提供完整的示例代碼。
一、準(zhǔn)備工作
要使用 Open Hardware Monitor,首先需要從其 GitHub 官方頁(yè)面 下載庫(kù)文件。下載完成后,你會(huì)獲得一個(gè) .dll 文件,這是我們將要在 C# 項(xiàng)目中引用的核心庫(kù)。
注意:確保下載的版本與你的項(xiàng)目目標(biāo)框架兼容(如 .NET Framework 4.x 或 .NET Core/.NET 5+)。
二、添加引用
在 Visual Studio 中為項(xiàng)目添加 Open Hardware Monitor 引用的步驟如下:
1、右鍵點(diǎn)擊解決方案資源管理器中的項(xiàng)目名。
2、選擇"添加" -> "引用"。
3、在彈出的窗口中選擇"瀏覽",然后定位到你下載的 OpenHardwareMonitorLib.dll 文件。
4、選中該 DLL 文件,點(diǎn)擊"添加"。
5、確認(rèn)添加引用操作。
三、讀取硬件溫度
下面是一個(gè)完整的 C# 示例程序,演示如何使用 Open Hardware Monitor 獲取 CPU、硬盤和內(nèi)存的溫度信息:
using System;
using OpenHardwareMonitor.Hardware;
namespace HardwareTemperatureMonitor
{
class Program
{
static void Main(string[] args)
{
Computer computer = new Computer
{
CPUEnabled = true, // 啟用CPU監(jiān)控
HDDEnabled = true, // 啟用硬盤監(jiān)控
RAMEnabled = true // 啟用內(nèi)存監(jiān)控(注意:大多數(shù)內(nèi)存模塊無(wú)溫度傳感器)
};
computer.Open(); // 開始監(jiān)控
foreach (var hardwareItem in computer.Hardware)
{
hardwareItem.Update(); // 更新硬件信息
foreach (var sensor in hardwareItem.Sensors)
{
if (sensor.SensorType == SensorType.Temperature) // 檢查是否為溫度傳感器
{
Console.WriteLine($"{hardwareItem.Name} - {sensor.Name}: {sensor.Value.GetValueOrDefault()}°C");
}
}
}
computer.Close(); // 結(jié)束監(jiān)控
}
}
}

上圖展示了程序運(yùn)行后輸出的硬件溫度信息。
該代碼通過(guò)以下步驟實(shí)現(xiàn)了溫度讀?。?/p>
1、創(chuàng)建一個(gè) Computer 實(shí)例,并啟用 CPU、硬盤和內(nèi)存的監(jiān)控。
2、調(diào)用 computer.Open() 啟動(dòng)硬件監(jiān)控。
3、遍歷所有硬件設(shè)備及其傳感器,篩選出類型為 Temperature 的傳感器。
4、輸出每個(gè)傳感器對(duì)應(yīng)的硬件名稱及當(dāng)前溫度值。
5、最后調(diào)用 computer.Close() 關(guān)閉監(jiān)控。
四、注意事項(xiàng)
管理員權(quán)限:某些系統(tǒng)下需要以管理員身份運(yùn)行程序,以便訪問(wèn)底層硬件信息。
內(nèi)存溫度限制:大多數(shù)內(nèi)存模塊并不包含溫度傳感器,因此可能無(wú)法獲取內(nèi)存溫度數(shù)據(jù)。
兼容性檢查:確保所使用的 Open Hardware Monitor 版本與你的項(xiàng)目目標(biāo)框架兼容,避免出現(xiàn)運(yùn)行時(shí)異常。
總結(jié)
通過(guò)集成 Open Hardware Monitor 庫(kù),我們可以在 C# 中輕松實(shí)現(xiàn)對(duì)硬件溫度的監(jiān)控功能。盡管 .NET 本身并未提供直接訪問(wèn)硬件信息的 API,但借助第三方開源庫(kù)的支持,開發(fā)者依然可以構(gòu)建強(qiáng)大的系統(tǒng)監(jiān)控和性能分析工具。
不管是用于服務(wù)器健康監(jiān)控、游戲性能優(yōu)化,還是個(gè)人電腦狀態(tài)查看,這項(xiàng)技術(shù)都具有廣泛的應(yīng)用價(jià)值。掌握此類硬件交互技巧,有助于提升軟件的功能性和用戶體驗(yàn)。
以上就是在C#中讀取CPU、硬盤和內(nèi)存溫度的完整代碼的詳細(xì)內(nèi)容,更多關(guān)于C#讀取CPU、硬盤和內(nèi)存溫度的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C# 禁止應(yīng)用程序多次啟動(dòng)的實(shí)例
經(jīng)常我們會(huì)有這樣的需求,只讓應(yīng)用程序運(yùn)行一個(gè)實(shí)體,下面是實(shí)現(xiàn)的方法,有需要的朋友可以參考一下2013-09-09
C#中創(chuàng)建統(tǒng)一API接口的實(shí)現(xiàn)方案
在 C# 中創(chuàng)建統(tǒng)一 API 接口需要從架構(gòu)設(shè)計(jì)、技術(shù)選型和代碼實(shí)現(xiàn)等多個(gè)層面進(jìn)行規(guī)劃,本文給大家詳細(xì)介紹了實(shí)現(xiàn)方案和完整示例代碼,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2025-04-04
C#拼接SQL語(yǔ)句 用ROW_NUMBER實(shí)現(xiàn)的高效分頁(yè)排序
C#拼接SQL語(yǔ)句,SQL Server 2005+,多行多列大數(shù)據(jù)量情況下,使用ROW_NUMBER實(shí)現(xiàn)的高效分頁(yè)排序2012-05-05
C# Environment.CurrentDirectory 靜態(tài)屬性的實(shí)現(xiàn)
本文主要介紹了C# Environment.CurrentDirectory 靜態(tài)屬性的實(shí)現(xiàn),它返回當(dāng)前應(yīng)用程序的工作目錄路徑,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
C#學(xué)習(xí)進(jìn)階Hello World的17種寫法代碼分享
本文針對(duì)不同階段、不同程度的C#學(xué)習(xí)者,介紹了C# Hello World的17種不同寫法,C# Hello World寫法入門、C# Hello World寫法進(jìn)階、C# Hello World的特別寫法三種角度進(jìn)行推進(jìn)2013-12-12
基于WinForm實(shí)現(xiàn)通用自動(dòng)更新系統(tǒng)的完整流程
在C/S架構(gòu)的應(yīng)用程序中,如何讓客戶端保持最新版本一直是個(gè)令人頭疼的問(wèn)題,每次更新都要通知用戶下載、安裝,不僅麻煩,還容易導(dǎo)致版本混亂,所以今天要介紹的,就是一個(gè)基于WinForm實(shí)現(xiàn)的通用自動(dòng)更新器方案,需要的朋友可以參考下2025-10-10
C#使用System.Net郵件發(fā)送功能踩過(guò)的坑
這篇文章主要介紹了C#使用System.Net郵件發(fā)送功能踩過(guò)的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

