您的位置:首页 > 其它

使用.NET FrameWork获取CPU,内存使用率以及磁盘空间

2014-02-23 14:20 435 查看
原文:使用.NETFrameWork获取CPU,内存使用率以及磁盘空间在以前,我们想获取CPU,内存等信息就不得不借助win32API来实现。但现在,.NETFrameWork已经把这些API封装到.NET类库中了,所以我们可以借助.NET类库很轻松的获取这些信息。首先,介绍几个要用到的类:

PerformanceCounter:表示windowsNT性能计数器组件

ComputerInfo:提供用于获取与计算机内存,已加载程序集,名称和操作系统有关信息的属性

DriveInfo:该类位于System.IO命名空间下,提供对有关驱动器信息的访问

介绍完几个必要的类,就开始实践吧:

1.初始化几个变量:


this.cpu=newPerformanceCounter("Processor","%ProcessorTime","_Total");
this.cinf=newComputerInfo();


2.获取占用CPU的百分比


publicdoubleGetCpuPercent()
{
varpercentage=this.cpu.NextValue();
returnMath.Round(percentage,2,MidpointRounding.AwayFromZero);
}


3.获取占用内存的百分比


publicdoubleGetMemoryPercent()
{
varusedMem=this.cinf.TotalPhysicalMemory-this.cinf.AvailablePhysicalMemory;//总内存减去可用内存
returnMath.Round(
(double)(usedMem/Convert.ToDecimal(this.cinf.TotalPhysicalMemory)*100),
2,
MidpointRounding.AwayFromZero);
}


4.获取磁盘剩余空间及总空间


///<summary>
///根据盘符获取磁盘信息
///</summary>
///<paramname="diskName"></param>
///<returns>一个自定义类对象</returns>
publicHardDiskInfoGetHardDiskInfoByName(stringdiskName)
{
DriveInfodrive=newDriveInfo(diskName);
returnnewHardDiskInfo{FreeSpace=GetDriveData(drive.AvailableFreeSpace),TotalSpace=GetDriveData(drive.TotalSize),Name=drive.Name};
}
///<summary>
///获取所有驱动盘信息
///</summary>
///<returns></returns>
publicIEnumerable<HardDiskInfo>GetAllHardDiskInfo()
{
List<HardDiskInfo>list=newList<HardDiskInfo>();
foreach(DriveInfodinDriveInfo.GetDrives())
{
if(d.IsReady)
{
list.Add(newHardDiskInfo{Name=d.Name,FreeSpace=this.GetDriveData(d.AvailableFreeSpace),TotalSpace=this.GetDriveData(d.TotalSize)});
}
}
returnlist;
}

privatestringGetDriveData(longdata)//将磁盘大小的单位由byte转化为G
{
return(data/Convert.ToDouble(1024)/Convert.ToDouble(1024)/Convert.ToDouble(1024)).ToString("0.00");
}

classHardDiskInfo//自定义类
{
publicstringName{get;set;}
publicstringFreeSpace{get;set;}
publicstringTotalSpace{get;set;}
}


运行结果:





Demo下载:

demo




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: