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";
}