2.PerformanceCounter简述及用法

一 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”(线程)等类别

[c-sharp] view plain copy
print ?
  1. public static void GetCategoryNameList()  
  2. {  
  3.     PerformanceCounterCategory[] myCat2;  
  4.     myCat2 = PerformanceCounterCategory.GetCategories();  
  5.     for (int i = 0; i < myCat2.Length; i++)  
  6.     {  
  7.         Console.WriteLine(myCat2[i].CategoryName);  
  8.     }  
  9. }  
public static void GetCategoryNameList() { PerformanceCounterCategory[] myCat2; myCat2 = PerformanceCounterCategory.GetCategories(); for (int i = 0; i < myCat2.Length; i++) { Console.WriteLine(myCat2[i].CategoryName); } }

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

[c-sharp] view plain copy
print ?
  1. public static void GetInstanceNameListANDCounterNameList(string CategoryName)  
  2. {  
  3.     string[] instanceNames;  
  4.     ArrayList counters = new ArrayList();  
  5.     PerformanceCounterCategory mycat = new PerformanceCounterCategory(CategoryName);  
  6.     try  
  7.     {  
  8.         instanceNames = mycat.GetInstanceNames();  
  9.         if (instanceNames.Length == 0)  
  10.         {  
  11.             counters.AddRange(mycat.GetCounters());  
  12.         }  
  13.         else  
  14.         {  
  15.             for (int i = 0; i < instanceNames.Length; i++)  
  16.             {  
  17.                 counters.AddRange(mycat.GetCounters(instanceNames[i]));  
  18.             }  
  19.         }  
  20.         for (int i = 0; i < instanceNames.Length; i++)  
  21.         {  
  22.             Console.WriteLine(instanceNames[i]);  
  23.         }  
  24.         Console.WriteLine(”******************************”);  
  25.         foreach (PerformanceCounter counter in counters)  
  26.         {  
  27.             Console.WriteLine(counter.CounterName);  
  28.         }  
  29.     }  
  30.     catch (Exception)  
  31.     {  
  32.         Console.WriteLine(”Unable to list the counters for this category”);  
  33.     }  
  34. }  
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获得性能情况显示

[c-sharp] view plain copy
print ?
  1. private static void PerformanceCounterFun(string CategoryName, string InstanceName, string CounterName)  
  2. {  
  3.     PerformanceCounter pc = new PerformanceCounter(CategoryName, CounterName, InstanceName);  
  4.     while (true)  
  5.     {  
  6.         Thread.Sleep(1000); // wait for 1 second   
  7.         float cpuLoad = pc.NextValue();  
  8.         Console.WriteLine(”CPU load = ” + cpuLoad + “ %.”);  
  9.     }  
  10. }  
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”);

 

 

原文地址:http://www.cnblogs.com/xh831213/archive/2008/06/12/1218234.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值