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(, "Loading.../");
PerformanceCounter cpup = new PerformanceCounter("Processor", "% Processor Time", "_Total");
PerformanceCounter diskp = new PerformanceCounter("PhysicalDisk", "Disk Read Bytes/sec", "_Total");
try
{
do
{
Thread.Sleep();
var cpuv1 = (int)cpup.NextValue();
var diskv1 = (int)diskp.NextValue();
Thread.Sleep();
var cpuv2 = (int)cpup.NextValue();
var diskv2 = (int)diskp.NextValue();
Thread.Sleep();
var cpuv3 = (int)cpup.NextValue();
var diskv3 = (int)diskp.NextValue();
Thread.Sleep();
var cpuv4 = (int)cpup.NextValue();
var diskv4 = (int)diskp.NextValue();
var cpuv = (cpuv1 + cpuv2 + cpuv3 + cpuv4) / ;
var diskv = (diskv1 + diskv2+ diskv3 + diskv4) / ;
string data = $"{cpuv}%/{diskv}";
backgroundWorker.ReportProgress(,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. C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .

    转:http://blog.csdn.net/smartsmile2012/article/details/8682295 #region 获取cpu序列号 硬盘ID 网卡硬地址 /**/ /// & ...

  2. 获取CPU和内存的使用率

    1.获取CPU的使用率 主要就是一个计算. int CUseRate::GetCPUUseRate() //获取CPU使用率 { ; FILETIME ftIdle, ftKernel, ftUser ...

  3. python在windows下获取cpu、硬盘、bios、主板序列号

    测试 此处使用的是wmi库,可以去google里面搜索“python wmi” import os, sysimport timeimport wmi,zlib def get_cpu_info() ...

  4. Linux下使用java获取cpu、内存使用率

    原文地址:http://www.voidcn.com/article/p-yehrvmep-uo.html 思路如下:Linux系统中可以用top命令查看进程使用CPU和内存情况,通过Runtime类 ...

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

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

  6. C# 获取CPU序列号、网卡MAC地址、硬盘序列号封装类,用于软件绑定电脑

    using System.Management; namespace GLaLa { /// <summary> /// hardware_mac 的摘要说明. /// </summ ...

  7. 获取CPU序列号、网卡MAC地址、硬盘序列号

    <pre name="code" class="csharp"> using System; using System.Collections; u ...

  8. Qt获取CPU编号和硬盘序列号

    windows下执行命令除了用cmd之外,还有个东西叫WMIC,非常强大,可以通过他获取很多信息,包括硬件信息. QString frmMain::getWMIC(const QString & ...

  9. C# 获取计算机cpu,硬盘,内存相关的信息

    using System;using System.Management; namespace MmPS.Common.Helper{ /// <summary> /// 获取计算机相关的 ...

随机推荐

  1. Centos6.5 安装MYSQL 5.5 -5.6.-5.7 一键yum快速安装 ,初始配置

    Centos6.5 安装MYSQL 5.5 ---5.6---5.7 一键yum快速安装 ,初始配置 第一步:安装mysql-5.5---- 5.6 ---- 5.7的yum源 [root@sv03 ...

  2. 利用Module模块把构建的神经网络跑起来

    训练一个神经网络往往只需要简单的几步: 准备训练数据 初始化模型的参数 模型向往计算与向后计算 更新模型参数 设置相关的checkpoint 如果上述的每个步骤都需要我们写Python的代码去一步步实 ...

  3. 每天学点SpringCloud(一):使用SpringBoot2.0.3整合SpringCloud

    最近开始学习SpringCloud,在此把我学习的过程记录起来,跟大家分享一下,一起学习.想学习SpringCloud的同学赶快上车吧. 本次学习使用得SpringBoot版本为2.0.3.RELEA ...

  4. 吴恩达机器学习笔记37-学习曲线(Learning Curves)

    学习曲线就是一种很好的工具,我经常使用学习曲线来判断某一个学习算法是否处于偏差.方差问题.学习曲线是学习算法的一个很好的合理检验(sanity check).学习曲线是将训练集误差和交叉验证集误差作为 ...

  5. lua入门demo(HelloWorld+redis读取)

    1. lua入门demo 1.1. 入门之Hello World!! 由于我习惯用docker安装各种软件,这次的lua脚本也是运行在docker容器上 openresty是nginx+lua的各种模 ...

  6. JMH实践-代码性能测试工具

    概述 JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件 JMH比较典型的应用场景有: 想准确的知道某个方法需要执行多长时间,以及执行时间和输入之间的 ...

  7. python读取并写入csv文件

    在ubuntu下,新建.csv文件的方法是使用LibreOffice来创建一个数据表,然后我们把表格存储为.csv的格式: “Save as”菜单把我们的表格存为一个CSV的文件格式:命名为csvDa ...

  8. 安卓Listview和Adapter数据设计

    ListView是一种用于垂直显示的列表控件,如果显示内容过多,则会自动出现垂直滚动条,每一行是一个View对象,在每一行上可以放置任何组件,Adapter适配器是数据和UI的桥梁,为数据显示提供了统 ...

  9. chrome强制刷新,非ctrl+f5

    开发时,经常有ctrl+f5无法做到真正的强制刷新,以下可以帮到你 Ctrl+Shift+Del 清除Google浏览器缓存的快捷键 Ctrl+Shift+R 重新加载当前网页而不使用缓存内容

  10. leetcode — count-and-say

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...