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

 
 
     

最新文章

  1. 记CentOS-7-x86_64-DVD-1503与Windows7单硬盘双系统的安装
  2. HTML5-链接
  3. Network - FTP与SFTP
  4. This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.
  5. php curl vs python提交多维数组+文件
  6. 别人网站生成的json
  7. To fix sql server 2008 r2 Evaluation period has expired by change the key
  8. 如何看懂XDEBUG+WEBGRIND?(转)
  9. okHttp封装使用
  10. 算法模板——计算几何2(二维凸包——Andrew算法)
  11. Centos7上安装使用locate
  12. HTML5之Canvas画正方形
  13. EntityFramework Core 1.1+ Backing Fields(返回字段)
  14. 某喷码机品牌U盘存储的配置文件简记
  15. Elasticsearch 安装操作手册
  16. java_oop_接口
  17. es6数值
  18. Vuejs——(11)组件——slot内容分发
  19. fast-rcnn里的一些具体内容
  20. MT【186】四边形中的余弦定理

热门文章

  1. 【C#】实现按Windows排序方式排序
  2. 微软职位内部推荐-SW Engineer II for Skype
  3. android Camera 中添加一种场景模式
  4. php基础33:正则匹配-perl
  5. Qt——树的搜索
  6. iOS适配HTTPS,创建一个自签名的SSL证书(x509)具体步骤
  7. sql server 2008 登录 4064 错误解决办法
  8. 由外边距合并到BFC
  9. Java集合类: Set、List、Map、Queue使用场景梳理
  10. groot 引入外部模板