获取系统的CPU使用率、内存使用率

获取系统的性能参数,可以通过Process、PerformanceCounter或者WMI完成。

下面看看PerformanceCounter类是怎么获取的。

首先看看GetCategoryNameList()函数,这个函数是自定义的,主要用来获取本机上的计数器列表

        //获取性能计数器类别列表
        public static void GetCategoryNameList()
        {
            PerformanceCounterCategory[] myCat2;
            myCat2 = PerformanceCounterCategory.GetCategories();
            for (int i = 0; i < myCat2.Length;i++ )
            {
                Console.WriteLine(myCat2[i].CategoryName.ToString());
            }
            
        }

再看另外一个函数,这个主要是获取某一个计数器下的性能计数器的名称

        //获取性能计数器类别下的实例的名称实例下性能计数器的名称
        public static void GetInstanceNameListAndCounterNameList(string CategoryName)
        {
            string[] instanceName;
            ArrayList counters = new ArrayList();
            PerformanceCounterCategory mycat = new PerformanceCounterCategory(CategoryName);
            try
            {
                instanceName = mycat.GetInstanceNames();
                if (instanceName.Length==0)
                {
                    counters.AddRange(mycat.GetCounters());
                }
                else
                {
                    for (int i = 0; i < instanceName.Length;i++ )
                    {
                        counters.AddRange(mycat.GetCounters(instanceName[i]));
                    }
                }
                for (int i = 0; i < instanceName.Length;i++ )
                {
                    Console.WriteLine(instanceName[i]);
                }
                Console.WriteLine("*************************");
                foreach (PerformanceCounter counter in counters)
                {
                    Console.WriteLine(counter.CounterName);
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine("Unable to list the counter for this category");
            }
        }


有了上面的两个函数,我们就可以知道本机的计数器已对应的性能名称。



上图就是本机的计数器名称,当然是很多的了……


上图是对应的Memory的性能计数器的名称,我们怎么获取某一个性能参数呢?

//根据categoryName ,counterName,instanceName 获得性能情况显示
        private static void PerformanceCounterFun(string CategoryName, string InstanceName, string CounterName)
        {
            PerformanceCounter pc = new PerformanceCounter(CategoryName, CounterName, InstanceName);

            while (true)
            {
                Thread.Sleep(1000);
                float cpuload = pc.NextValue();
                Console.WriteLine("cpu load------->" + cpuload + "%");
            }
        }

上述的函数中,我们就可以如下的形式调用即可:

PerformanceCounterFun("Processor", "_Total", "% Processor Time");

我们就能获取处理器的CPU使用率。(这里就不贴图了)


接下来我们看看怎么通过获取内存的使用情况,这个主要是通过WMI实现的。


ManagementClass mc = new ManagementClass("Win32_OperatingSystem");
            ManagementObjectCollection moc = mc.GetInstances();

            foreach (ManagementObject mo in moc)
            {
                if (mo["TotalVisibleMemorySize"] != null)
                {
                    long xx = long.Parse(mo["TotalVisibleMemorySize"].ToString());
                    Console.WriteLine(xx);
                }

                if (mo["FreePhysicalMemory"]!=null)
                {
                    long availablebytes = long.Parse(mo["FreePhysicalMemory"].ToString());
                    Console.WriteLine(availablebytes);
                }
            }

上述代码就帮助我们获取到物理内存和可用内存。获取到的结果和我们使用任务管理看到的内存性能参数是一致的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪_无痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值