使用.NET FrameWork获取CPU,内存使用率以及磁盘空间
在以前,我们想获取CPU,内存等信息就不得不借助win32 API来实现。但现在,.NET FrameWork已经把这些API封装到.NET类库中了,所以我们可以借助.NET类库很轻松的获取这些信息。首先,介绍几个要用到的类:
PerformanceCounter:表示windows NT性能计数器组件
ComputerInfo:提供用于获取与计算机内存,已加载程序集,名称和操作系统有关信息的属性
DriveInfo:该类位于System.IO命名空间下,提供对有关驱动器信息的访问
介绍完几个必要的类,就开始实践吧:
1.初始化几个变量:
this.cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total");
this.cinf = new ComputerInfo();
2.获取占用CPU的百分比
public double GetCpuPercent()
{
var percentage = this.cpu.NextValue();
return Math.Round(percentage, , MidpointRounding.AwayFromZero);
}
3.获取占用内存的百分比
public double GetMemoryPercent()
{
var usedMem = this.cinf.TotalPhysicalMemory - this.cinf .AvailablePhysicalMemory ;//总内存减去可用内存
return Math.Round(
(double)(usedMem / Convert.ToDecimal(this.cinf.TotalPhysicalMemory) * ),
,
MidpointRounding.AwayFromZero);
}
4.获取磁盘剩余空间及总空间
/// <summary>
/// 根据盘符获取磁盘信息
/// </summary>
/// <param name="diskName"></param>
/// <returns>一个自定义类对象</returns>
public HardDiskInfo GetHardDiskInfoByName(string diskName)
{
DriveInfo drive = new DriveInfo(diskName);
return new HardDiskInfo { FreeSpace = GetDriveData(drive.AvailableFreeSpace),TotalSpace =GetDriveData (drive.TotalSize ),Name =drive .Name };
}
/// <summary>
/// 获取所有驱动盘信息
/// </summary>
/// <returns></returns>
public IEnumerable<HardDiskInfo> GetAllHardDiskInfo()
{
List<HardDiskInfo> list = new List<HardDiskInfo>();
foreach (DriveInfo d in DriveInfo.GetDrives())
{
if (d.IsReady)
{
list.Add(new HardDiskInfo { Name = d.Name, FreeSpace = this.GetDriveData(d.AvailableFreeSpace), TotalSpace = this.GetDriveData(d.TotalSize) });
}
}
return list;
} private string GetDriveData(long data)//将磁盘大小的单位由byte转化为G
{
return (data / Convert.ToDouble() / Convert.ToDouble() / Convert.ToDouble()).ToString("0.00");
} class HardDiskInfo//自定义类
{
public string Name { get; set; }
public string FreeSpace { get; set; }
public string TotalSpace { get;set;}
}
运行结果:

Demo下载:
使用.NET FrameWork获取CPU,内存使用率以及磁盘空间的更多相关文章
- 查看Linux服务器CPU使用率、内存使用率、磁盘空间占用率、负载情况
[root@server script]# vi monitor.py #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige imp ...
- 获取系统相关信息 (CPU使用率 内存使用率 系统磁盘大小)
引言 在软件开个过程中,对于软件的稳定性和使用率也是我们需要关注的 . 使用sigar来监控,简单方便! 使用说明:下载sigar jar及配合sigar的dll文件来用,需要将dll文件放到JD ...
- Ubuntu 16.04安装indicator-sysmonitor实现导航条显示上下行网速/CPU/内存使用率
安装: sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor sudo apt-get update sudo apt-get in ...
- 使用snmp+mrtg监控CPU、流量、磁盘空间、内存
1.安装snmp rpm -qa|grep snmp* //查看是否安装了snmpyum -y install snmp* //安装snmp #vim /etc/snmp/snmpd.confroco ...
- shell脚本监控cpu/内存使用率 转
该脚本检测cpu和内存的使用情况,只需要调整memorySetting.cpuSetting.userEmail要发邮件报警的email地址即可 如果没有配置发邮件参数的哥们,已配置了的,直接飞到代码 ...
- C#做的CPU内存使用率
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- linux 查看CPU内存 网络 流量 磁盘 IO
使用vmstat命令来察看系统资源情况 在命令行方式下,如何查看CPU.内存的使用情况,网络流量和磁盘I/O? Q: 在命令行方式下,如何查看CPU.内存的使用情况,网络流量和磁盘I/O? A: 在命 ...
- Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本
[本文出自天外归云的博客园] 网上搜,东拼西凑,组装了一个可以查Linux服务器CPU使用率.内存使用率.磁盘空间占用率.负载情况的python脚本. 脚本内容如下: # -*- coding:utf ...
- 获取Windows操作系统的CPU使用率以及内存使用率
此功能参考了ProcessHacker项目的代码. 声明定义 typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64 ...
随机推荐
- C#属性: 利用set实现递归
直接帖代码: public class Bird { int xdata; /// <summary> /// 属性的简洁写法,等同于下面的xData方式 /// </summary ...
- Oracle的if else if
前段时间写Oracle存储过程就遇到问题.原来写成这样if 1=2 then null;elseif 1=3 then nullend if;在PL/SQL编辑环境下elseif没有变色,说明不是 ...
- Google java代码风格导入Eclipse
Git地址 https://github.com/codeset/google-java-styleguide 下载配置文件在Eclipse中执行导入:Window -> Preferences ...
- 《信息安全系统设计基础》第一次实验报告--Linux 基础入门
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全设计基础 班级:1352 姓名:何伟钦 学号:20135223 成绩: 指导教师:娄嘉鹏 ...
- 交流异步电机的Modelica模型
Modelica标准库里的异步电机模型过于复杂,为了便于学习,我用最基本的异步电机方程写了一个Modelica模型,公式参照陈伯时的<电力拖动自动控制系统--运动控制系统>第3版的190页 ...
- bt协议详解 DHT篇(上)
bt协议详解 DHT篇(上) 最近开发了一个免费教程的网站,突然产生了仔细了解bt协议的想法,这篇文章是bt协议详解系列的第三篇,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的 ...
- 一个优秀的Android应用从建项目开始
1.项目结构 现在的MVP模式越来越流行.就默认采用了.如果项目比较小的话: app——Application Activity Fragment Presenter等的顶级父类 config——AP ...
- C++实现反射机制
NET下的很多技术都是基于反射机制来实现的,反射让.NET平台下的语言变得得心应手.最简单的,比如枚举类型,我们我可以很容易的获得一个枚举变量的数值以及其名称字符串. 可是,在C++中,枚举变量本质上 ...
- javascript继承(二)—创建对象的三种模式
一.工厂模式 function createPerson(name,age){ var o = {}; o.name = name; o.age = age; o.sayHi = function() ...
- jQuery使用之(四)处理页面的表单元素
表单是一个特殊的页面元素,value的值是最受关注的,jQuery提供了强大的val()方法来处理相关的操作. 1.获取表单元素的值. 直接调用val()方法时可以获取选择器的 中的第一个元素的val ...