1. 程式人生 > >NetworkInterface網速監測

NetworkInterface網速監測

控件 new t con ati sum aps win cond val

   private NetworkInterface[] nicArr;  //網卡集合
        private Timer timer;    //計時器

        public MainWindow()
        {
            InitializeComponent();

            InitNetworkInterface();
            InitializeTimer();
        }


        /// <summary>
        /// 初始化網卡
        /// </summary>
        private void InitNetworkInterface()
        {
            nicArr = NetworkInterface.GetAllNetworkInterfaces();
            for (int i = 0; i < nicArr.Length; i++)
                cboNetworkInterface.Items.Add(nicArr[i].Name);
            cboNetworkInterface.SelectedIndex = 0;
        }

        /// <summary>
        /// 初始化計時器
        /// </summary>
        private void InitializeTimer()
        {
            timer = new Timer();
            timer.Interval = 1000;
            timer.Elapsed += timer_Elapsed;
            timer.Start();
        }

        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            this.Dispatcher.Invoke(() =>
            {
                UpdateNetworkInterface();
            });
        }

        /// <summary>
        /// 獲取網絡數據並更新到UI
        /// </summary>
        private void UpdateNetworkInterface()
        {
            NetworkInterface nic = nicArr[cboNetworkInterface.SelectedIndex];

            IPv4InterfaceStatistics interfaceStats = nic.GetIPv4Statistics();

            int bytesSentSpeed = (int)(interfaceStats.BytesSent - double.Parse(txtbBytesSent.Text)) / 1024;
            int bytesReceivedSpeed = (int)(interfaceStats.BytesReceived - double.Parse(txtbBytesReceived.Text)) / 1024;

            //更新控件

              txtbSpeed.Text = nic.Speed.ToString()  +"  "+nic.GetPhysicalAddress().ToString().Trim()+"  "+nic.NetworkInterfaceType.ToString().Trim();
            //  txtbInterfaceType.Text = nic.NetworkInterfaceType.ToString();
            //txtbSpeed.Text = nic.Speed.ToString();
            txtbBytesReceived.Text = interfaceStats.BytesReceived.ToString();
            txtbBytesSent.Text = interfaceStats.BytesSent.ToString();
            txtbSentSecond.Text = bytesSentSpeed.ToString() + " KB/s";
            txtbReceivedSecond.Text = bytesReceivedSpeed.ToString() + " KB/s";

        }

  

NetworkInterface網速監測