[英]Create a PING Monitor in WPF Application - With DataGrid
我是新来的论坛。 对不起,我的英语...不是很好。
请阅读我的文章: 如何使用C#并行执行多个“ Ping”
请有人帮我,并解释一下如何填充WPF Datagrid来监视IP列表?
我正在建立一个类:
...公共类ServerMonitor {公共字符串ID {设置; 得到; } public string Timeout {set; 得到; }公用字符串IP {set; 得到; }公用字符串TTL {set; 得到; }} ...
在主要方法中,我得到它在datagridview中显示数据。
MonitorPing.PingAddressesAsync(new List<IPAddress>() {
IPAddress.Parse ("XXX.XXX.XXX.XXX"),
IPAddress.Parse ("XXX.XXX.XXX.XXX"),
IPAddress.Parse ("XXX.XXX.XXX.XXX"),
IPAddress.Parse ("XXX.XXX.XXX.XXX")
}, delegate (Task<List<PingReply>> tpr)
{
var lr = tpr.Result;
foreach (var pr in lr)
{
//This correct
Dispatcher.BeginInvoke(DispatcherPriority.Normal,(ThreadStart)(() => dataGrid.Items.Add(new ServerMonitor { ID = pr.Buffer.ToString(), Timeout = pr.Status.ToString(), IP = pr.Address.ToString(), TTL = pr.RoundtripTime.ToString() })));
}
});
}
在这一点上,没关系。
但是,如何获取要实时更新的数据? 我用了一段时间,用了System.Timer ...
谢谢,对不起!
要在DataGrid中显示具有在UI中自动更新的值的项目列表,您需要将DataGrid绑定到实现INotifyPropertyChanged接口的对象的ObservableCollection。
执行实际ping操作的代码将驻留在您的ViewModel中,该模型还将包含ObservableCollection。 该代码将定期遍历该ObservableCollection中的对象,并使用ping结果更新每个对象的所需public属性,并且这些值将在DataGrid中自动更新,因为它们实现了INotifyPropertyChanged接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.