C#获取CPU和内存使用率

C#获取CPU和内存使用率,第1张

概述原文: C#获取CPU和内存使用率 获取内存使用率 方式1: using System;using System.Runtime.InteropServices;namespace ConsoleApp1{ public class Class1 { static void Main(string[] args) { 原文: C#获取CPU和内存使用率

@H_301_7@ 获取内存使用率

方式1:@H_301_7@

@H_301_7@

@H_301_7@

using System;using System.Runtime.InteropServices;namespace ConsoleApp1{    public class Class1    {        static voID Main(string[] args)        {            Console.Writeline("总内存:" + FormatSize(GetTotalPhys()));            Console.Writeline("已使用:" + FormatSize(GetUsedPhys()));            Console.Writeline("可使用:" + FormatSize(GetAvailPhys()));            Console.ReadKey();        }        #region 获得内存信息API        [Dllimport("kernel32.dll")]        [return: MarshalAs(UnmanagedType.Bool)]        public static extern bool GlobalMemoryStatusEx(ref MEMORY_INFO mi);        //定义内存的信息结构        [StructLayout(LayoutKind.Sequential)]        public struct MEMORY_INFO        {            public uint DWLength; //当前结构体大小            public uint DWMemoryLoad; //当前内存使用率            public ulong ullTotalPhys; //总计物理内存大小            public ulong ullAvailPhys; //可用物理内存大小            public ulong ullTotalPagefile; //总计交换文件大小            public ulong ullAvailPagefile; //总计交换文件大小            public ulong ullTotalVirtual; //总计虚拟内存大小            public ulong ullAvailVirtual; //可用虚拟内存大小            public ulong ullAvailExtendedVirtual; //保留 这个值始终为0        }        #endregion        #region 格式化容量大小        /// <summary>        /// 格式化容量大小        /// </summary>        /// <param name="size">容量(B)</param>        /// <returns>已格式化的容量</returns>        private static string FormatSize(double size)        {            double d = (double)size;            int i = 0;            while ((d > 1024) && (i < 5))            {                d /= 1024;                i++;            }            string[] unit = { "B","KB","MB","GB","TB" };            return (string.Format("{0} {1}",Math.Round(d,2),unit[i]));        }        #endregion        #region 获得当前内存使用情况        /// <summary>        /// 获得当前内存使用情况        /// </summary>        /// <returns></returns>        public static MEMORY_INFO GetMemoryStatus()        {            MEMORY_INFO mi = new MEMORY_INFO();            mi.DWLength = (uint)System.Runtime.InteropServices.Marshal.SizeOf(mi);            GlobalMemoryStatusEx(ref mi);            return mi;        }        #endregion        #region 获得当前可用物理内存大小        /// <summary>        /// 获得当前可用物理内存大小        /// </summary>        /// <returns>当前可用物理内存(B)</returns>        public static ulong GetAvailPhys()        {            MEMORY_INFO mi = GetMemoryStatus();            return mi.ullAvailPhys;        }        #endregion        #region 获得当前已使用的内存大小        /// <summary>        /// 获得当前已使用的内存大小        /// </summary>        /// <returns>已使用的内存大小(B)</returns>        public static ulong GetUsedPhys()        {            MEMORY_INFO mi = GetMemoryStatus();            return (mi.ullTotalPhys - mi.ullAvailPhys);        }        #endregion        #region 获得当前总计物理内存大小        /// <summary>        /// 获得当前总计物理内存大小        /// </summary>        /// <returns&amp;gt;总计物理内存大小(B)&amp;lt;/returns&amp;gt;        public static ulong GetTotalPhys()        {            MEMORY_INFO mi = GetMemoryStatus();            return mi.ullTotalPhys;        }        #endregion    }}
VIEw Code

 方式2:@H_301_7@

备注:需要添加 System.Management 的引用@H_301_7@

@H_301_7@

@H_301_7@

using System;using System.Management;namespace ConsoleApp1{    public class Class1    {        static voID Main(string[] args)        {            //需要添加 System.Management 的引用            //获取总物理内存大小            ManagementClass cimobject1 = new ManagementClass("Win32_PhysicalMemory");            ManagementObjectCollection moc1 = cimobject1.GetInstances();            double available=0,capacity=0;            foreach (ManagementObject mo1 in moc1)            {                capacity += ((Math.Round(Int64.Parse(mo1.PropertIEs["Capacity"].Value.ToString()) / 1024 / 1024 / 1024.0,1)));            }            moc1.dispose();            cimobject1.dispose();            //获取内存可用大小            ManagementClass cimobject2 = new ManagementClass("Win32_PerfFormattedData_PerfOS_Memory");            ManagementObjectCollection moc2 = cimobject2.GetInstances();            foreach (ManagementObject mo2 in moc2)            {                available += ((Math.Round(Int64.Parse(mo2.PropertIEs["AvailableMBytes"].Value.ToString()) / 1024.0,1)));            }            moc2.dispose();            cimobject2.dispose();            Console.Writeline("总内存=" + capacity.ToString() + "G");            Console.Writeline("可使用=" + available.ToString() + "G");            Console.Writeline("已使用=" + ((capacity - available)).ToString() + "G," + (Math.Round((capacity - available) / capacity * 100,0)).ToString() + "%");            Console.ReadKey();        }    }}
VIEw Code

 @H_301_7@

 @H_301_7@ 获取cpu使用率

@H_301_7@

@H_301_7@

using System;using System.Diagnostics;namespace ConsoleApp1{    public class Class1    {        static voID Main(string[] args)        {            PerformanceCounter cpuCounter;            PerformanceCounter ramCounter;            cpuCounter = new PerformanceCounter();            cpuCounter.categoryname = "Processor";            cpuCounter.Countername = "% Processor Time";            cpuCounter.Instancename = "_Total";            cpuCounter = new PerformanceCounter("Processor","% Processor Time","_Total");            ramCounter = new PerformanceCounter("Memory","Available MBytes");            Console.Writeline("电脑cpu使用率:" + cpuCounter.NextValue() + "%");            Console.Writeline("电脑可使用内存:" + ramCounter.NextValue() + "MB");            Console.Writeline();            while (true)            {                System.Threading.Thread.Sleep(1000);                Console.Writeline("电脑cpu使用率:" + cpuCounter.NextValue() + " %");                Console.Writeline("电脑可使用内存:" + ramCounter.NextValue() + "MB");                Console.Writeline();                if ((int)cpuCounter.NextValue() > 80)                {                    System.Threading.Thread.Sleep(1000 * 60);                }            }        }    }}
VIEw Code

 @H_301_7@

 @H_301_7@

相关链接 :@H_301_7@ C#获取电脑型号、系统版本、内存大小、硬盘大小、CPU信息 关于c# 中读取系统内存大小的问题 C#获取特定进程CPU和内存使用率 C#获取CPU占用率、内存占用、磁盘占用、进程信息 C# 准确获取系统 CPU 使用率 如何用C#实时获取CPU利用率 C#中利用WMI对象获取物理内存和可用内存大小信息 C#获取系统内存大小 总结

以上是内存溢出为你收集整理的C#获取CPU和内存使用率全部内容,希望文章能够帮你解决C#获取CPU和内存使用率所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1214575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存