在以前,我们想获取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下载:

demo

 
 
     

使用.NET FrameWork获取CPU,内存使用率以及磁盘空间的更多相关文章

  1. 查看Linux服务器CPU使用率、内存使用率、磁盘空间占用率、负载情况

    [root@server script]# vi monitor.py #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige imp ...

  2. 获取系统相关信息 (CPU使用率 内存使用率 系统磁盘大小)

    引言 在软件开个过程中,对于软件的稳定性和使用率也是我们需要关注的 .  使用sigar来监控,简单方便!  使用说明:下载sigar jar及配合sigar的dll文件来用,需要将dll文件放到JD ...

  3. Ubuntu 16.04安装indicator-sysmonitor实现导航条显示上下行网速/CPU/内存使用率

    安装: sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor sudo apt-get update sudo apt-get in ...

  4. 使用snmp+mrtg监控CPU、流量、磁盘空间、内存

    1.安装snmp rpm -qa|grep snmp* //查看是否安装了snmpyum -y install snmp* //安装snmp #vim /etc/snmp/snmpd.confroco ...

  5. shell脚本监控cpu/内存使用率 转

    该脚本检测cpu和内存的使用情况,只需要调整memorySetting.cpuSetting.userEmail要发邮件报警的email地址即可 如果没有配置发邮件参数的哥们,已配置了的,直接飞到代码 ...

  6. C#做的CPU内存使用率

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. linux 查看CPU内存 网络 流量 磁盘 IO

    使用vmstat命令来察看系统资源情况 在命令行方式下,如何查看CPU.内存的使用情况,网络流量和磁盘I/O? Q: 在命令行方式下,如何查看CPU.内存的使用情况,网络流量和磁盘I/O? A: 在命 ...

  8. Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本

    [本文出自天外归云的博客园] 网上搜,东拼西凑,组装了一个可以查Linux服务器CPU使用率.内存使用率.磁盘空间占用率.负载情况的python脚本. 脚本内容如下: # -*- coding:utf ...

  9. 获取Windows操作系统的CPU使用率以及内存使用率

    此功能参考了ProcessHacker项目的代码. 声明定义 typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64 ...

随机推荐

  1. [py] os.system os.popen commands 执行shell

      1.仅输出到屏幕,pwd保存的是状态<=====可用于执行shell命令 pwd=os.system(pwd)   2.popen可以保存命令结果 pwd=os.popen('pwd').r ...

  2. Wifi开发技术总结1

    摘要: 刚刚接触wifi开发的东西,用的模块是 ESP8266-12E. 资料很多,淘宝地址:https://item.taobao.com/item.htm?spm=a1z09.2.9.10.qGL ...

  3. TCP之心跳包实现思路

    说起网络应用编程,想到最多的就是聊天类的软件.当然,在这类软件中,一般都会有一个用户掉线检测功能.今天我们就通过使用自定义的HeartBeat方式来检测用户的掉线情况. 心跳包实现思路 我们采用的思路 ...

  4. 《Linux内核设计与实现》Chapter 3 读书笔记

    <Linux内核设计与实现>Chapter 3 读书笔记 进程管理是所有操作系统的心脏所在. 一.进程 1.进程就是处于执行期的程序以及它所包含的资源的总称. 2.线程是在进程中活动的对象 ...

  5. c# 模拟get和post

    private string HttpPost(string Url, string postDataStr)         {             HttpWebRequest request ...

  6. JavaScript split() 方法

    split() 方法用于把一个字符串分割成字符串数组.

  7. [AaronYang]C#人爱学不学[4]

    本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...

  8. 年终福利:调试.NET Framework源代码

    前言 要问JAVA语言最大的优势之一,那就是开源.开源的JAVA框架让JAVA程序员可以不断的通过看源代码来学习.成长.解决问题.并随着时间增长能力越来越强,自然薪水就越来越高.而DONET程序员要看 ...

  9. beta版本项目冲刺

    项目冲刺第一天 项目冲刺第二天 项目冲刺第三天 项目冲刺第四天 项目冲刺第五天 项目冲刺第六天 项目冲刺第七天

  10. Android开发环境的调研

    在大二下,由于课程需要,就去自学Java,当时就借了一本java面向对象的书来看,根据书上的说明搭建环境,下载了JDK1.6和eclipse.但从来没有用过eclipse,java也就只是刚入门而已. ...