C# 使用 PerformanceCounter 获取 CPU 和 硬盘的使用率:

先看界面:

建一个 Windows Form  桌面程序,代码如下:

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;namespace PerformanceCounterApp
{public partial class MainForm : Form{private BackgroundWorker backgroundWorker;private bool isWorking = false;public MainForm(){InitializeComponent();}private void Form_Load(object sender, EventArgs e){cpuLabel.Text = string.Empty;diskLabel.Text = string.Empty;backgroundWorker = new BackgroundWorker();backgroundWorker.WorkerReportsProgress = true;backgroundWorker.WorkerSupportsCancellation = true;backgroundWorker.DoWork += BackgroundWorker_DoWork;backgroundWorker.ProgressChanged += BackgroundWorker_ProgressChanged;backgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted;}private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e){//PerformanceCounter diskp = new PerformanceCounter("PhysicalDisk", "% Disk Time", "_Total");isWorking = true;backgroundWorker.ReportProgress(0, "Loading.../");PerformanceCounter cpup = new PerformanceCounter("Processor", "% Processor Time", "_Total");PerformanceCounter diskp = new PerformanceCounter("PhysicalDisk", "Disk Read Bytes/sec", "_Total");try{do{Thread.Sleep(150);var cpuv1 = (int)cpup.NextValue();var diskv1 = (int)diskp.NextValue();Thread.Sleep(150);var cpuv2 = (int)cpup.NextValue();var diskv2 = (int)diskp.NextValue();Thread.Sleep(150);var cpuv3 = (int)cpup.NextValue();var diskv3 = (int)diskp.NextValue();Thread.Sleep(150);var cpuv4 = (int)cpup.NextValue();var diskv4 = (int)diskp.NextValue();var cpuv = (cpuv1 + cpuv2 + cpuv3 + cpuv4) / 4;var diskv = (diskv1 + diskv2+ diskv3 + diskv4) / 4;string data = $"{cpuv}%/{diskv}";backgroundWorker.ReportProgress(0,data);} while (!backgroundWorker.CancellationPending);}catch (Exception){throw;}finally{cpup.Dispose();diskp.Dispose();isWorking = false;}}private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e){string[] data = e.UserState.ToString().Split('/');cpuLabel.Text = $"CPU: {data[0]}";diskLabel.Text = $"Disk: {data[1]} Bytes/sec";}private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e){var result = e.Result;var cc = e.Cancelled;}private void startButton_Click(object sender, EventArgs e){if (backgroundWorker.CancellationPending) return;if (isWorking){startButton.Text = "Start";backgroundWorker.CancelAsync();}else{startButton.Text = "Stop";backgroundWorker.RunWorkerAsync();} }private void Form_Closed(object sender, FormClosedEventArgs e){if (isWorking){startButton.Enabled = false;backgroundWorker.CancelAsync();}}}
}

C# 使用 PerformanceCounter 获取 CPU 和 硬盘的使用率相关推荐

  1. golang 获取cpu 内存 硬盘 使用率 信息 进程信息

    目录 1.获取 cpu 内存 磁盘使用率 2.获取本机信息 3. 获取CPU信息 4. 获取内存信息 5.获取磁盘信息 6.获取网络信息 7. 获取进程信息 使用库: go get github.co ...

  2. vb 获取计算机序列号,VB.net获取CPU与硬盘物理序列号与容量的实例

    在.net中要取得 CPU与硬盘物理序列号与容量我们会用到方法ManagementObjectSearcher了,下面我给大家来举几个实现. 首先,引用System.Management:然后在代码中 ...

  3. 如何获取CPU的主频和使用率?

    最近看到论坛中有人需要在Java端读取系统的CPU主频和使用率,在网上搜索了一下,发现了一些有用的东西,就在这总结一下. 一.获得CPU的主频 1.从注册表中读取 在注册表中键HKLM/HARDWAR ...

  4. python获取机器唯一标识_通过python 获取cpu和硬盘等硬件序列号组成的唯一识别码...

    import wmi c = wmi.WMI() def yingpan(): # # 硬盘序列号 cc = "" for physical_disk in c.Win32_Dis ...

  5. C#使用PerformanceCounter获取CPU使用率时报错:无法加载计数器名称数据,因为从注册表读取的所以无效

    解决方法:cmd(管理员身份打开),输入 "LODCTR /R" 等一会后系统提示"--恢复成功" 然后就OK了,程序也正常了

  6. C/C++ 获取硬件唯一标识 (CPU序列号/硬盘号)

    调用控制台来获取CPU序列号/硬盘号 不同PC的硬盘数量可能不同 若有多个硬盘,此处的输出将多个硬盘号拼接到了一起 若需拆分可自行修改. 注:插拔硬盘U盘等会造成获取到的硬盘号不同,如果想以此为机器码 ...

  7. openstack资源统计监控系列之ceilometer+gnocchi获取cpu、memory项目实战及实现源码(三)

    在做openstack资源统计监控中通过ceilometer+gnocchi获取cpu.memory的使用率,遇到了很多的坑,在一下分别记录,并附上实现的源码. 自从openstack发布到 S 版本 ...

  8. 获取本机CPU,硬盘等使用情况

    早上的时候接到主管的一个任务,要获取服务器上的cpu,硬盘, 数据库等 的使用情况,并以邮件的方式发给boss, = =没办法,公司的服务器真是不敢恭维,顺便吐槽一下公司的网速,卡的时候30k左右徘徊 ...

  9. Winform中实现根据CPU和硬盘获取机器码

    场景 首先获取设备硬盘的卷标号,然后获取CPU的序列号,将这两个拼接成机器码. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的 ...

最新文章

  1. python三大神器_Python之旅:Python上古三大神器之一PIP①
  2. select下拉框下拉跳转代码
  3. Gauss-Seidel迭代求解线性方程组
  4. EasyX识别不到VC++6.0
  5. java代码怎样连接es,Elasticsearch 连接ES的两种方式
  6. openresty开发系列33--openresty执行流程之3重写rewrite和重定向
  7. 查找最接近的元素c语言,查找最接近的元素
  8. 登录代码,程序不是作文
  9. oracle删除死锁进程
  10. android+eclipse工程,#Cocos2d+lua#android+Eclipse工程编译设置
  11. 20190528论文笔记
  12. 如何安装ipa文件(二)
  13. idea创建jsp项目并运行
  14. goeasy的简单应用
  15. 哈希摘要、证书、对称密钥、公私密钥应用场景梳理
  16. iOS蓝牙连接打印机,打印小票
  17. 工科学生计算机二级报什么类别,学科门类(二级类)工学.doc
  18. 双向迭代器实现对该商品名称数组的双向(向前和向后)遍历。
  19. C++ 项目实战:跨平台的文件与视频压缩解压工具的设计与实现
  20. Google搜索引擎使用技巧大全

热门文章

  1. 什么是明星店铺品牌词?拼多多明星店铺品牌推广注意什么?
  2. Centos系统进入单用户模式
  3. 践行科技向善,腾讯优图联合腾讯天御发布面向未成年人的内容安全审核解决方案
  4. 【Stacking改进】基于随机采样与精度加权的Stacking算法
  5. C语言——字符串和字符数组的区别及字符串的赋值
  6. C++设计模式的设计原则(面向对象八大设计原则)
  7. 服务器 网站 维护,网站服务器如何做好日常维护?
  8. Android翻页入门
  9. vue那个生命周期函数操作dom_Vue生命周期函数面试题
  10. 凛冬至,外包咋了,努力照样250!