2
0

NetworkMonitor.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System.Collections;
  2. using System.Diagnostics;
  3. using System.Timers;
  4. namespace Optimizer
  5. {
  6. public class NetworkMonitor
  7. {
  8. Timer _timer;
  9. ArrayList _adapters;
  10. ArrayList _monitoredAdapters;
  11. public NetworkMonitor()
  12. {
  13. _adapters = new ArrayList();
  14. _monitoredAdapters = new ArrayList();
  15. EnumerateNetworkAdapters();
  16. _timer = new Timer(1000);
  17. _timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
  18. }
  19. private void EnumerateNetworkAdapters()
  20. {
  21. PerformanceCounterCategory category = new PerformanceCounterCategory("Network Interface");
  22. foreach (string name in category.GetInstanceNames())
  23. {
  24. if (name == "MS TCP Loopback interface") continue;
  25. if (name.ToLowerInvariant().Contains("virtual")) continue;
  26. if (name.ToLowerInvariant().Contains("hyper-v")) continue;
  27. NetworkAdapter adapter = new NetworkAdapter(name);
  28. adapter.DownloadCounter = new PerformanceCounter("Network Interface", "Bytes Received/sec", name);
  29. adapter.UploadCounter = new PerformanceCounter("Network Interface", "Bytes Sent/sec", name);
  30. _adapters.Add(adapter);
  31. }
  32. }
  33. private void timer_Elapsed(object sender, ElapsedEventArgs e)
  34. {
  35. foreach (NetworkAdapter adapter in this._monitoredAdapters)
  36. {
  37. adapter.Refresh();
  38. }
  39. }
  40. public NetworkAdapter[] Adapters
  41. {
  42. get { return (NetworkAdapter[])_adapters.ToArray(typeof(NetworkAdapter)); }
  43. }
  44. public void StartMonitoring()
  45. {
  46. if (_adapters.Count > 0)
  47. {
  48. foreach (NetworkAdapter adapter in _adapters)
  49. {
  50. if (!_monitoredAdapters.Contains(adapter))
  51. {
  52. _monitoredAdapters.Add(adapter);
  53. adapter.Initialize();
  54. }
  55. }
  56. _timer.Enabled = true;
  57. }
  58. }
  59. public void StartMonitoring(NetworkAdapter adapter)
  60. {
  61. if (!_monitoredAdapters.Contains(adapter))
  62. {
  63. _monitoredAdapters.Add(adapter);
  64. adapter.Initialize();
  65. }
  66. _timer.Enabled = true;
  67. }
  68. public void StopMonitoring()
  69. {
  70. _monitoredAdapters.Clear();
  71. _timer.Enabled = false;
  72. }
  73. public void StopMonitoring(NetworkAdapter adapter)
  74. {
  75. if (_monitoredAdapters.Contains(adapter))
  76. {
  77. _monitoredAdapters.Remove(adapter);
  78. }
  79. if (_monitoredAdapters.Count == 0)
  80. {
  81. _timer.Enabled = false;
  82. }
  83. }
  84. }
  85. }