C# 准确获取系统 CPU 使用率
2017-12-13 08:33 Dorisoy 阅读(10953) 评论(0) 编辑 收藏 举报1. PerformanceCounter 注意:(32位下不是线程安全的)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | public class ProcessorUsage { const float sampleFrequencyMillis = 1000; protected object syncLock = new object (); protected PerformanceCounter counter; protected float lastSample; protected DateTime lastSampleTime; /// <summary> /// /// </summary> public ProcessorUsage() { this .counter = new PerformanceCounter( "Processor" , "% Processor Time" , "_Total" , true ); } /// <summary> /// /// </summary> /// <returns></returns> public float GetCurrentValue() { if ((DateTime.UtcNow - lastSampleTime).TotalMilliseconds > sampleFrequencyMillis) { lock (syncLock) { if ((DateTime.UtcNow - lastSampleTime).TotalMilliseconds > sampleFrequencyMillis) { lastSample = counter.NextValue(); lastSampleTime = DateTime.UtcNow; } } } return lastSample; } } |
2.WMI
1 2 3 4 5 6 7 8 9 10 11 12 13 | ManagementObjectSearcher searcher = new ManagementObjectSearcher( "select * from Win32_PerfFormattedData_PerfOS_Processor" ); var cpuTimes = searcher.Get() .Cast<managementobject>() .Select(mo => new { Name = mo[ "Name" ], Usage = mo[ "PercentProcessorTime" ] } ) .ToList(); var query = cpuTimes.Where(x => x.Name.ToString() == "_Total" ).Select(x => x.Usage); var cpuUsage = query.SingleOrDefault(); |
Xamarin
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析