使用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 }
参考: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