繁体   English   中英

在WPF应用程序中创建PING监视器-使用DataGrid

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM