使用.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

 
 
     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM