使用PerformanceCounterCategory类,PerformanceCounter类。

获取Network Interface性能计数器实例。

PerformanceCounterCategory category = new PerformanceCounterCategory("Network Interface");

获取速度

adapter.dlCounter = new PerformanceCounter("Network Interface", "Bytes Received/sec", name);

 

在调试中:PerformanceCounterCategory category = new PerformanceCounterCategory("Network Interface");

语句报错:“无法加载计数器名称数据,因为从注册表读取的索引“”无效。”

解决方法:

先查看性能监视器( 命令:perfmon ), 会发现确实有错。

cmd 输入: lodctr /r  即可修复。

 

 1             try
 2             {
 3                 #region 输出全部"categoryName性能计数器类别名称"
 4                 PerformanceCounterCategory[] ArrayCategories = PerformanceCounterCategory.GetCategories();
 5                 foreach (var tempCategories in ArrayCategories)
 6                 {
 7                     Console.WriteLine(tempCategories.CategoryName);
 8                 }
 9 
10                 Console.WriteLine("==============================================");
11                 #endregion
12                 //性能计数器关联的性能计数器类别(性能对象)的名称
13                 string netCategoryName = "Network Interface";
14                 PerformanceCounterCategory category = new PerformanceCounterCategory(netCategoryName);
15                 string[] ArrayInstanceNames = category.GetInstanceNames();
16                 //性能对象实例
17                 foreach (var tempInstanceName in ArrayInstanceNames)
18                 {
19                     Console.WriteLine(tempInstanceName);
20                     // This one exists on every computer.  
21                     if (tempInstanceName == "MS TCP Loopback interface")
22                         continue;
23 
24                     PerformanceCounter[] ArrayCounters = category.GetCounters(tempInstanceName);
25                     #region 输出全部"categoryName性能计数器类别名称"
26                     foreach (var tempCounters in ArrayCounters)
27                     {
28                         Console.WriteLine(tempCounters.CounterName);
29                     }
30                     Console.WriteLine("==============================================");
31                     #endregion
32                     // Create an instance of NetworkAdapter class, and create performance counters for it.  
33                     NetworkAdapter adapter = new NetworkAdapter(tempInstanceName);
34                     //categoryName性能计数器类别名称,counterName计数器名称,instanceName性能对象实例名称
35                     adapter.dlCounter = new PerformanceCounter(netCategoryName, "Bytes Received/sec", tempInstanceName);
36                     adapter.ulCounter = new PerformanceCounter(netCategoryName, "Bytes Sent/sec", tempInstanceName);
37                     this.adapters.Add(adapter); // Add it to ArrayList adapter  
38                 }
39             }
40             catch (Exception e)
41             {
42                 throw e;
43             }
View Code

 

参考:http://blog.csdn.net/luols/article/details/5844061

     http://blog.csdn.net/yenange/article/details/47831143

     http://www.cnblogs.com/xh831213/archive/2008/06/12/1218234.html