(轉) C#網速監測


使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM