专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

在C#中的PerformanceCounter类的使用实例

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:14:12       共计:3668 浏览



一 PerformanceCounter 基本介绍

1 简单介绍

表示 Windows NT 性能计数器组件 

命名空间:System.Diagnostics

程序集:System(在 system.dll 中)

2 构造函数(只介绍本文要用到的)

PerformanceCounter (String, String, String) 

功能:

初始化 PerformanceCounter 类的新的只读实例,

并将其与本地计算机上指定的系统性能计数器或自定义性能计数器及类别实例关联

参数说明:

public PerformanceCounter (

 string categoryName,

 string counterName,

 string instanceName

)

categoryName

性能计数器关联的性能计数器类别(性能对象)的名称。 

counterName

性能计数器的名称。 

instanceName

性能计数器类别实例的名称,或者为空字符串 ("")(如果该类别包含单个实例)。

二 示例方法:

需要引用命名空间

using  System.Diagnostics;

using  System.Threading;

using  System.Collections;


1 获取性能计数器类别列表

虽然系统中有很多可用的计数器类别,但与之交互最频繁的可能是“Cache”(缓存)、“Memory”(内存)、

“Objects”(对象)、“PhysicalDisk”(物理磁盘)、“Process”(进程)、“Processor”(处理器)、

“Server”(服务器)、“System”(系统)和“Thread”(线程)等类别

        public   static   void  GetCategoryNameList()

        {

            PerformanceCounterCategory[] myCat2;

            myCat2  =  PerformanceCounterCategory.GetCategories();

            for  ( int  i  =   0 ; i  <  myCat2.Length; i ++ )

            {

                Console.WriteLine(myCat2[i].CategoryName.ToString());

            }

        }


2 获取性能计数器类别下的实例的名称实例下的性能计数器的名称

        public   static   void  GetInstanceNameListANDCounterNameList( string  CategoryName)

        {

            string [] instanceNames;

            ArrayList counters  =   new  ArrayList();

            PerformanceCounterCategory mycat  =   new  PerformanceCounterCategory(CategoryName);

            try

            {

                instanceNames  =  mycat.GetInstanceNames();

                if  (instanceNames.Length  ==   0 )

                {

                    counters.AddRange(mycat.GetCounters());

                }

                else

                {

                    for  ( int  i  =   0 ; i  <  instanceNames.Length; i ++ )

                    {

                        counters.AddRange(mycat.GetCounters(instanceNames[i]));

                    }

                }

                for  ( int  i  =   0 ; i  <  instanceNames.Length; i ++ )

                {

                    Console.WriteLine(instanceNames[i]);

                }

                Console.WriteLine( " ****************************** " );

                foreach  (PerformanceCounter counter  in  counters)

                {

                    Console.WriteLine(counter.CounterName);

                }

            }

            catch  (Exception)

            {

                Console.WriteLine( " Unable to list the counters for this category " );

            }

        }


3 根据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 );  //  wait for 1 second 

                float  cpuLoad  =  pc.NextValue();

                Console.WriteLine( " CPU load =  "   +  cpuLoad  +   "  %. " );

            }

        }


4 调用方法3显示cpu使用率

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


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:C#开发获取windows系统CPU使用率高于设置值的进程信息可配置是否显示控制台或隐藏控制台实例 | ·下一条:如何在C#中获取进程的用户名

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有