新闻中心
C#怎么获取CPU和内存使用率 C# PerformanceCounter类的使用
使用PerformanceCounter类可获取CPU和内存使用率。1. CPU使用率通过"Processor", "% Processor Time", "_Total"计数器获取,需调用NextValue()两次并间隔500ms;2. 内存使用率通过"Memory", "Available MBytes"获取可用内存,结合WMI查询Win32_OperatingSystem得到总内存,计算已用比例;3. 注意权限、命名准确性、资源释放及调用间隔,适合系统监控与性能分析。

C#中获取CPU和内存使用率最常用的方式是使用 PerformanceCounter 类,它位于 System.Diagnostics 命名空间下,可以方便地读取系统性能计数器数据。
1. 获取CPU使用率
要获取CPU使用率,需要创建一个类型为 "Processor" 的 PerformanceCounter,并监控其百分比处理器时间。
通常使用 "_Total" 实例来获取所有CPU核心的总体使用率。
- 类别名:Processor
- 计数器名:% Processor Time
- 实例名:_Total(表示所有核心合计)
示例代码:
using System;
using System.Diagnostics;
<p>class Program
{
static void Main()
{
using (var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"))
{
// 第一次调用返回0,需等待或调用NextValue()预热
float cpuUsage = cpuCounter.NextValue();
System.Threading.Thread.Sleep(500); // 等待500毫秒
cpuUsage = cpuCounter.NextValue(); // 获取真实值</p><pre class="brush:php;toolbar:false;"> Console.WriteLine($"CPU使用率: {cpuUsage:F2}%");
}
}}
注意: PerformanceCounter 的 NextValue() 方法首次调用会返回0,必须调用两次才能获得有效数据。建议间隔几百毫秒。
2. 获取内存使用率
获取内存使用情况通常通过监控“可用内存”或“已用内存”,然后计算使用率。
美图云修
商业级AI影像处理工具
50
查看详情
常用的是 "Memory" 类别下的 "Available MBytes" 计数器,再结合总内存计算已使用比例。
- 类别名:Memory
- 计数器名:Available MBytes(可用内存,单位MB)
示例代码:
using System;
using System.Diagnostics;
using System.Management; // 需要引用 System.Management
<p>class Program
{
static void Main()
{
// 获取可用内存
using (var memoryCounter = new PerformanceCounter("Memory", "Available MBytes", ""))
{
float *ailableMBytes = memoryCounter.NextValue();
long totalMemory = GetTotalPhysicalMemory(); // 获取总内存(MB)
float usedMemory = totalMemory - *ailableMBytes;
float memoryUsageRate = (usedMemory / totalMemory) * 100;</p><pre class="brush:php;toolbar:false;"> Console.WriteLine($"内存使用率: {memoryUsageRate:F2}%");
Console.WriteLine($"总内存: {totalMemory} MB");
Console.WriteLine($"可用内存: {*ailableMBytes} MB");
}
}
// 使用 WMI 获取总物理内存(单位:MB)
static long GetTotalPhysicalMemory()
{
using (var mos = new ManagementObjectSearcher("SELECT TotalVisibleMemorySize FROM Win32_OperatingSystem"))
{
foreach (ManagementObject mo in mos.Get())
{
// 返回的是KB,转换为MB
return (long)(Convert.ToUInt64(mo["TotalVisibleMemorySize"]) / 1024);
}
}
return 0;
}}
说明: PerformanceCounter 只能获取“可用内存”,无法直接获取“总内存”,所以需要借助 WMI(Win32_OperatingSystem)来获取系统总物理内存。
3. 注意事项与优化建议
使用 PerformanceCounter 时需要注意以下几点:
- 权限问题:在某些系统或环境下可能需要管理员权限。
-
计数器名
称区分大小写:尽量使用标准名称,避免拼写错误。 - 资源释放:建议使用 using 语句确保 PerformanceCounter 被正确释放。
- 多实例监控:如需监控单个CPU核心,可枚举 "Processor" 类别的所有实例(如 "0", "1" 等)。
- 性能影响:频繁调用 NextValue() 不会影响性能,但建议间隔不低于500ms。
基本上就这些。PerformanceCounter 是C#中获取系统资源使用情况最直接、稳定的方法,适合开发监控工具或性能分析程序。
以上就是C#怎么获取CPU和内存使用率 C# PerformanceCounter类的使用的详细内容,更多请关注其它相关文章!
# cpu内存使用率
# 新产品推广营销方法
# 淘宝测关键词排名软件
# 布丁酒店营销推广方案
# 山东企业seo平台官网
# seo教程书籍分类
# 濮阳汝州全平台营销推广
# 要注意
# 相关文章
# 首次
# 迭代
# 已用
# 两次
# 的是
# 如何使用
# 美图
# 遍历
# win
# ai
# 工具
# 处理器
# c#
# 建设跨境电商网站
# 克东性能提升关键词排名
# 更合网站建设知识
# 网站设计与优化费用
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
将JSON对象数组转置为键值对列表的实用指南
J*aScript教程:根据元素文本内容动态设置背景色
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
微信网页版官方入口直达 微信网页版网页版登录使用方法
生成rdflib自定义SPARQL函数:参数匹配与实践指南
大麦的“候补”是什么意思 大麦候补购票规则【详解】
Lar*el 递归关系中排除指定分支的教程
qq游戏免费畅玩入口_qq游戏电脑版快速启动
QQ邮箱正确登录入口_QQ邮箱官方网站使用地址
厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新
黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】
Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】
QQ邮箱网页版入口 QQ邮箱官方邮箱登录通道
python3时间如何用calendar输出?
蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版
如何在Python中使用Optional类型处理可变对象并避免Pylint警告
初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解
2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC
漫蛙漫画网页端入口 漫蛙2官方正版漫画站点
QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录
Win11怎么开启高性能模式_Windows 11电源计划优化设置
Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
深入理解J*aScript中的B样条曲线与节点向量生成
CSS子选择器:如何区分并样式化嵌套列表的子层级
如何提高微信支付的安全性_微信支付安全防护与设置建议
iwriter统一登录平台 iwrite账号密码登录页面
免费抖音短视频入口_抖音网页版短视频免费通道
poki网页游戏推荐_poki免费游戏平台入口
C++ map遍历方法大全_C++ map迭代器使用总结
漫蛙2网页版漫画入口 漫蛙漫画在线官方登录
Go语言中JSON数据解析与字段访问教程
如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略
Python大型XML文件高效流式解析教程
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
基于动态规划的房屋花卉种植最小成本算法详解
解决Tabulator日期时间排序问题的专业指南
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理
Tabulator表格中精确实现日期时间排序的指南
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
Centos/Linux 系统下安装 composer 的完整步骤
飞书妙记怎样用语音转文字速记_飞书妙记用语音转文字速记【速记方法】
Golang如何使用context实现超时取消_Golang context超时取消模式实践
必由学登录入口 必由学官方网站在线访问链接
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
Composer中的^和~符号代表什么_精通Composer版本号语义化约束
必由学官方平台入口 必由学在线课堂登录地址
谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航


2025-11-25
浏览次数:次
返回列表
称区分大小写:尽量使用标准名称,避免拼写错误。