最新要闻
- 今热点:塔吉克斯坦发生7.2级地震:新疆多地震感强烈
- 简讯:世界第二大啤酒制造商!比尔盖茨收购喜力啤酒股份:花了62亿
- 环球讯息:一周扭转广告业务无果:马斯克再裁数十名Twitter员工
- 御香山
- 环球热资讯!邓超主演!《中国乒乓》出品人回应票房不如预期:希望接下来能卖多少是多少
- 当前观察:洗衣机买波轮还是滚筒 答案你一定想不到
- 世界热头条丨销量下滑45岁以上买断工龄?上汽通用辟谣:无裁员计划
- 腾讯自研!开放世界生存手游《黎明觉醒:生机》开服:不限号不删档
- 环球即时看!iPhone 15真机照首曝:刘海屏时代终结 灵动岛成标配
- 沪上阿姨外包装旗袍图被质疑不雅 开叉至大腿根部不正常?官方回应
- 当前快报:Nvidia宣布GeForceNow将获得RTX服务器
- 天天日报丨辣椒越皱 就越辣?科学家好好研究了一番
- 全球时讯:128位《王者荣耀》选手通过职业技能等级考试 获“电子竞技员”证书
- 世界滚动:风云气象卫星今年两连发:中国将成全世界唯一!
- 【当前热闻】有开机广告用户照样买 全球电视销量TOP5 中国产占3席
- Intel 56核心发烧U跑分逼近AMD 64核心:峰值功耗1100W!
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【环球报资讯】C# 获取电脑内存、CPU信息
计数器、WMI
获取设备的内存信息,如系统可用运行内存:
(资料图片)
1 public static async TaskGetMemoryAvailableAsync(FileSizeUnit fileSizeUnit = FileSizeUnit.GB) 2 { 3 return await Task.Run(() => 4 { 5 using var managementClass = new ManagementClass("Win32_PerfFormattedData_PerfOS_Memory"); 6 using var instances = managementClass.GetInstances(); 7 double available = 0; 8 foreach (var mo in instances) 9 {10 //AvailableMBytes单位是MB11 var size = long.Parse(mo.Properties["AvailableMBytes"].Value.ToString()) * 1024 * 1024;12 available += size.ConvertTo(fileSizeUnit);13 }14 15 return available;16 });17 }
以上是ManagementClass方式实现,还有ManagementObjectSearcher,都是WMI检索查询。
WMI查询比较慢,上面一段耗时在200ms+。
还有一种用的较多的,PerformanceCounter性能计数器,以CPU获取为例:
1 public static async TaskGetUsageByCounterAsync() 2 { 3 //CPU计数器 4 using var pcCpuUsage = new PerformanceCounter("Processor", "% Processor Time", "_Total") { MachineName = "." }; 5 // NextValue首次会返回0,所以需要加个延时下次再获取值 6 pcCpuUsage.NextValue(); 7 await Task.Delay(TimeSpan.FromMilliseconds(500)); 8 var cpuUsed = pcCpuUsage.NextValue(); 9 return cpuUsed;10 }
性能计数器,也有一定的耗时40ms以上。另外因为它实现方式,初始化后无法第一次获取到真正数值,需要间隔一段时间再去拿。所以此方案实际耗时挺高
WMI、性能计数器,昨天遇到了使用异常:
看源码,计数器是注册表PerformanceData位置损坏了,而Management是IWbemServices获取状态码ErrorCode异常。
PerformanceCounter是WMI,而WMI是基于WBEM协议实现的,所以我理解成上面的异常其实是一类问题。
官网有对此类异常有一些描述:重新生成性能计数器库值 - Windows Server | Microsoft Learn
所以基于PerformanceCounter、ManagementClass以及ManagementObjectSearcher的实现,有一定风险。
kernel32
kernel32下有个函数可以获取内存状态
1 [DllImport("kernel32.dll")]2 [return: MarshalAs(UnmanagedType.Bool)]3 static extern bool GlobalMemoryStatusEx(ref MEMORYINFO mi);
以下是获取可用运行内存的实现:
//Define the information structure of memory [StructLayout(LayoutKind.Sequential)] struct MEMORYINFO { public uint dwLength; //Current structure size public uint dwMemoryLoad; //Current memory utilization public ulong ullTotalPhys; //Total physical memory size public ulong ullAvailPhys; //Available physical memory size public ulong ullTotalPageFile; //Total Exchange File Size public ulong ullAvailPageFile; //Total Exchange File Size public ulong ullTotalVirtual; //Total virtual memory size public ulong ullAvailVirtual; //Available virtual memory size public ulong ullAvailExtendedVirtual; //Keep this value always zero } ////// Get the current memory usage /// ///private static MEMORYINFO GetMemoryStatus() { MEMORYINFO memoryInfo = new MEMORYINFO(); memoryInfo.dwLength = (uint)System.Runtime.InteropServices.Marshal.SizeOf(memoryInfo); GlobalMemoryStatusEx(ref memoryInfo); return memoryInfo; } /// /// 获取系统可用运行内存 /// /// 默认单位GB ///public static double GetMemoryAvailable(FileSizeUnit fileSizeUnit = FileSizeUnit.GB) { var memoryStatus = GetMemoryStatus(); var memoryAvailable = ((long)memoryStatus.ullAvailPhys).ConvertTo(fileSizeUnit); return memoryAvailable; }
上述方式,获取速度超快,几乎不耗时。
通过Kernel32方式,获取CPU信息(CPU比例计算逻辑,代码略多点):
1 ///2 /// 获取CPU占用率/使用率(单位:%) 3 /// 4 ///5 public static async Task GetUsageByKernelAsync() 6 { 7 long idleTime1 = 0; 8 long kernelTime1 = 0; 9 long userTime1 = 0;10 if (GetSystemTimes(out var lpIdleTime, out var lpKernelTime, out var lpUserTime))11 {12 idleTime1 = lpIdleTime;13 kernelTime1 = lpKernelTime;14 userTime1 = lpUserTime;15 }16 //添加俩次获取CPU信息的间隔17 await Task.Delay(TimeSpan.FromSeconds(0.5));18 long idleTime2 = 0;19 long kernelTime2 = 0;20 long userTime2 = 0;21 if (GetSystemTimes(out var lpIdleTime2, out var lpKernelTime2, out var lpUserTime2))22 {23 idleTime2 = lpIdleTime2;24 kernelTime2 = lpKernelTime2;25 userTime2 = lpUserTime2;26 }27 //分别获取到用户时间、内核时间、空闲时间28 var userTime = userTime2 - userTime1;29 var kernelTime = kernelTime2 - kernelTime1;30 var idleTime = idleTime2 - idleTime1;31 //计算Cpu占用率。计算公式:用户时间+内核时间-空闲时间/用户时间+内核时间32 var systemTotal = kernelTime + userTime;33 var cpu = (systemTotal - idleTime) * 10000 / systemTotal;34 return cpu / 100.0;35 }36 37 /// 38 /// 获取系统CPU时间数据39 /// 40 /// 空闲时间41 /// 内核时间42 /// 用户时间43 ///44 [DllImport("kernel32.dll", SetLastError = true)]45 static extern bool GetSystemTimes(out long lpIdleTime, out long lpKernelTime, out long lpUserTime);
另外,也有一种途径可以获取到内存信息,引用程序集Microsoft.VisualBasic,Microsoft.VisualBasic.Devices下有个ComputerInfo类
var physicalMemory = new Microsoft.VisualBasic.Devices.ComputerInfo().AvailablePhysicalMemory;
可以拿到可用内存、总内存,不过CPU信息是没有的。
ComputerInfo的内部源码,我标注了下:
所以ComputerInfo,也是基于GlobalMemoryStatusEx函数做了封装,大家可以直接用。
参考列表:
How to get system specs (processor, memory etc...) in C#? (microsoft.com)Get the CPU Usage in C# | Delft StackC#获取CPU和内存使用率 - 雨水的命运 - 博客园 (cnblogs.com)Determine CPU usage of current process (C++ and C#) | Philosophical GeekGet CPU Usage with GetSystemTimes - CodeProject-
【环球报资讯】C# 获取电脑内存、CPU信息
计数器、WMI获取设备的内存信息,如系统可用运行内存:1publicstaticasyncTask<double>GetMemoryAvailableAsync(FileSi
来源: 【环球报资讯】C# 获取电脑内存、CPU信息
今热点:塔吉克斯坦发生7.2级地震:新疆多地震感强烈
简讯:世界第二大啤酒制造商!比尔盖茨收购喜力啤酒股份:花了62亿
环球讯息:一周扭转广告业务无果:马斯克再裁数十名Twitter员工
御香山
环球热资讯!邓超主演!《中国乒乓》出品人回应票房不如预期:希望接下来能卖多少是多少
当前观察:洗衣机买波轮还是滚筒 答案你一定想不到
世界热头条丨销量下滑45岁以上买断工龄?上汽通用辟谣:无裁员计划
腾讯自研!开放世界生存手游《黎明觉醒:生机》开服:不限号不删档
环球即时看!iPhone 15真机照首曝:刘海屏时代终结 灵动岛成标配
读Java实战(第二版)笔记18_基于Lambda的领域特定语言
沪上阿姨外包装旗袍图被质疑不雅 开叉至大腿根部不正常?官方回应
008 - 检验 (1)
JVM基础学习笔记
当前快报:Nvidia宣布GeForceNow将获得RTX服务器
天天日报丨辣椒越皱 就越辣?科学家好好研究了一番
全球时讯:128位《王者荣耀》选手通过职业技能等级考试 获“电子竞技员”证书
世界滚动:风云气象卫星今年两连发:中国将成全世界唯一!
【当前热闻】有开机广告用户照样买 全球电视销量TOP5 中国产占3席
Intel 56核心发烧U跑分逼近AMD 64核心:峰值功耗1100W!
世界热头条丨易企盈控股集团 深圳有限公司_对于易企盈控股集团 深圳有限公司简单介绍
fusion app自定义事件源码介绍(下)
Spring IOC官方文档学习笔记(十二)之基于Java的容器配置
【世界热闻】Flink之间的组件通信
Model 3还要便宜 分析师看衰特斯拉:不降价达不到目标
爱奇艺:《狂飙》热度刷新历史纪录 会员规模有信心继续增长
焦点热讯:Shell常用命令与脚本实例
每日热门:【算法训练营day58】LeetCode739. 每日温度 LeetCode496. 下一个更大元素
(三)浅谈人工智能:烽烟四起
【世界播资讯】Spark系列 - (2) Spark核心概念
每日简讯:ChatGPT承认:对人文学科 有3个负面影响
环球速讯:美女UP主买理想ONE一年血亏10万 欲哭无泪:我也要去维权
【算法训练营day57】LeetCode647. 回文子串 LeetCode516. 最长回文子序列
当前最新:006 - 数据类型、来源和清洗
焦点热议:跨境电商平台公布海外数字化展会首批重点名单 涵盖新能源等多个外贸核心行业
热讯:女孩用吹风机吹头发:插座处突然着火
播报:RTX 4060售价6999元 七彩虹将星X15 AT游戏本图赏
130MB/s读写稳如磐石!希捷酷玩系列蜘蛛侠特别版游戏硬盘2TB评测:RGB超有范儿
第七章 程序是在何种环境下运行的
二八轮动策略:基础与改进
Python迭代器是啥?
【世界速看料】学习笔记——Git命令
世界时讯:Vue相关笔记
吃面比吃米更易发胖 西安交大团队证实:三大原因
当前聚焦:中国联通空中基站研制成功:无人机留空最长8小时 信号覆盖100平方公里
爱玛MVP战神新国标电动两轮车直降千元:1499元 能跑40km
【天天报资讯】V社“钓鱼”打击外挂:《Dota 2》一次性封禁4万作弊玩家
全球聚焦:百度2022年赚了207亿 李彦宏放大招:多项业务整合文心一言
世界报道:Vue3从基础到精通
【算法训练营day56】LeetCode583. 两个字符串的删除工作 LeetCode72. 编辑距离
全球看点:孙正雯微博_孙正雯
女子连刷11个差评被曝光 当事人要起诉商家:视频流传到全网 严重影响生活
肉眼可见!今晚上演金星伴月木星相随 不看亏大了
热门看点:一年挣了3700亿元 马斯克被股东联合起诉:工资太高
热议:ROG推出新款XG27AQMR显示器:2K Fast IPS、300Hz刷新率
迅雷重磅升级堪比NAS:远程可看电脑片库 手机、电脑、电视全打通
当前动态:vue08----()
全球讯息:Cloudkit游标分页获取数据
教你编写SQLMap的Tamper脚本过狗
职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!
三元锂电池剧烈萎缩 比亚迪刀片电池走对了:消费者纷纷买单
精彩看点:研究发现AI在某些方面不如婴儿:很难监测人类行为动机
死磕到底!车顶维权女车主:特斯拉刹车失灵事件过去3年 官方仍未提供数据
世界今日报丨RTX 4070游戏本性能平平:有媒体评测一半放弃了!
环球消息!会员数近1.2亿!爱奇艺2022首次全年盈利:净利13亿 会员限制已妥协
每日热门:【算法训练营day55】LeetCode392. 判断子序列 LeetCode115. 不同的子序列
今日快看!vue+html5实现上传图片
【全球播资讯】Linux命令-文件、磁盘管理
大势前瞻!文旅还是短视频,你弯道超车风口在这了
环球关注:杭州余杭新居民落户当天可拿市民卡,医保、社保同时办理
世界快资讯:网红老师张雪峰吐槽还60万房贷利息57万 道歉:朋友弄错了
有灵魂的米饭:仓浪河东北黑龙江五常大米稻花香5kg 37.9元大促
天天即时看!经典之作退场!开发商Rovio宣布《愤怒的小鸟》将下架安卓平台
当前滚动:广东一车主加完油从车窗撒钱离去引众怒:车主回应已致歉 为何最基本尊重做不到
1个App能扫全品牌共享单车!全能车被哈啰告上法庭判赔六千万元
环球百事通!拍一拍后缀怎么弄
今日热文:浅识面向对象和面向过程
世界短讯!Framework 中使用 Toolkit.Mvvm 的生成器功能
科幻杂志被ChatGPT生成投稿“淹没”:无奈关闭投稿渠道
拿下一百多项年度大奖!《艾尔登法环》累计销量破2000万份
世界最新:头皮发麻!半夜追剧腾讯视频突然跳转恐怖片 客服:需重新下载客户端
当前滚动:博主实测理想L7越野性能 李想:中国路上95%的车 一个项目都过不去
天天热消息:新一代国产本田雅阁内饰曝光:比美版少了多个实体按键
每日聚焦:大数据应用场景下,标签策略如何实现价值最大化?
通讯!98%的程序员,都没有研究过JVM重排序和顺序一致性
环球即时看!查看Linux系统下CPU、内存、硬盘等信息
环球短讯!第121篇: DOM常用类型(Document、Element)
全球实时:CountDownLatch的使用
世界速讯:鹏都农牧:缅甸肉牛暂无法通关,公司正在积极推进复工复产工作
天天看点:10岁小学生玩游戏18天花掉14万 退款申请腾讯无视:家长感慨一定看好支付密码
焦点精选!摩托罗拉Razr 2023外观曝光:超大外屏抢眼
全球微头条丨安卓都16GB内存了 iPhone 15 Pro还在挤牙膏
【时快讯】或6.58万起 疑似比亚迪海鸥售价曝光:最远能跑405km
中国香港影史首部票房破亿华语电影诞生 此前TOP10均为好莱坞
每日快看:【黑科技】GPS北斗卫星授时技术下的NTP网络时间服务器
世界热头条丨每天走路10000步很健康?错 大错特错!
踢翻日系!比亚迪又要对BBA动手了
当前报道:20年来最低点!PC出货量暴跌:Intel等巨头业绩“凉凉” 显卡存储也没人买
SpringCloud+Dubbo3 = 王炸 !
世界微动态丨理想汽车:被4S店PUA、不如看看直营无套路零售中心