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

简介: 原文:使用.NET FrameWork获取CPU,内存使用率以及磁盘空间      在以前,我们想获取CPU,内存等信息就不得不借助win32 API来实现。但现在,.NET FrameWork已经把这些API封装到.NET类库中了,所以我们可以借助.NET类库很轻松的获取这些信息。
原文: 使用.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, 2, MidpointRounding.AwayFromZero);
        }

 

3.获取占用内存的百分比
   public double GetMemoryPercent()
        {
            var usedMem = this.cinf.TotalPhysicalMemory - this.cinf .AvailablePhysicalMemory ;//总内存减去可用内存
          return   Math.Round(
                   (double)(usedMem / Convert.ToDecimal(this.cinf.TotalPhysicalMemory) * 100),
                   2,
                   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(1024) / Convert.ToDouble(1024) / Convert.ToDouble(1024)).ToString("0.00");
        }

     
    class HardDiskInfo//自定义类
    {
        public string Name { get; set; }
        public string   FreeSpace { get; set; }
        public string TotalSpace { get;set;}
    }

运行结果:

 

Demo下载:

demo

 
 
     
目录
相关文章
|
15天前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
40 4
|
21天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
10天前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置详细指南,如何选择合适云服务器配置?
阿里云服务器配置选择涉及CPU、内存、公网带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型e实例,如2核2G3M配置,适合低流量网站。企业用户则应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。选择时考虑实际应用需求和性能稳定性。
117 6
|
1天前
LabVIEW中CPU和内存使用情况在NI分布式系统管理器中不可见
LabVIEW中CPU和内存使用情况在NI分布式系统管理器中不可见
10 3
|
1天前
|
监控 Linux API
LabVIEW监控实时嵌入式目标上的CPU和内存使用情况
LabVIEW监控实时嵌入式目标上的CPU和内存使用情况
14 4
|
2天前
|
数据挖掘 定位技术
.NET Compact Framework下的GPS NMEA data数据分析(二)转
.NET Compact Framework下的GPS NMEA data数据分析(二)转
|
3天前
|
SQL Windows
保姆级:Windows Server 2012上安装.NET Framework 3.5
保姆级:Windows Server 2012上安装.NET Framework 3.5
|
13天前
|
Ubuntu Shell 网络安全
【专栏】在Ubuntu 22.04上安装KubeSphere的指南:确保系统至少有4GB内存和2核CPU,安装Docker和docker-compose
【4月更文挑战第28天】在Ubuntu 22.04上安装KubeSphere的指南:确保系统至少有4GB内存和2核CPU,安装Docker和docker-compose。下载安装脚本`curl -sSL https://kubesphere.io/install.sh | bash`,根据提示选择安装选项,等待完成。安装后,通过访问控制台验证安装效果。解决可能出现的错误、网络问题和性能问题,利用KubeSphere提升容器管理效率。本文为顺利安装和使用提供参考。
|
15天前
|
开发框架 .NET C#
探索VB.NET:了解.NET Framework下的Visual Basic
【4月更文挑战第27天】Visual Basic进化为VB.NET,融入.NET Framework,提供面向对象编程、泛型、LINQ等特性。VB.NET是强类型语言,支持类型推断,通过Windows Forms和WPF构建桌面应用。广泛应用于企业级、Web和数据处理开发,是易学且功能强大的编程工具。随着.NET版本更新,VB.NET的应用仍具价值,适合初学者和资深开发者。
|
18天前
|
监控 Shell
Shell脚本监控CPU、内存和硬盘利用率
Shell脚本监控CPU、内存和硬盘利用率