1

所以我有这个代码:

Ping ping = new Ping();
for(int i = 0; i<= number_of_pings; i++)
{
    PingReply pingReply = ping.Send(address_to_send);
    dataGridView1.Rows.Add(address_to_send, pingReply.Address, pingReply.RoundtripTime, pingReply.Status);         
}

出于某种原因,当它被泵入 adataGridView1时,dataGridview1有五个(或我指定的 ping 数量)一次泵入它的数据字段。我正在尝试做的是dataGridView1定期填充。例如,在每个 ping 完成后,它的输出到dataGridView1下一个 ping 开始,依此类推。

想法?

4

3 回答 3

1

BackgroundWorker 是满足您需求的最佳解决方案之一。在您的类中定义一个空的 DataTable 并将 Ping 代码放入 BackgroundWorker_DoWork 方法中。然后将结果添加到 DataTable。当此方法完成时,BackgroundWorker_WorkerComplete 已触发。您应该再次运行 DoWork 方法以进行下一次 ping。

于 2012-11-10T13:24:06.293 回答
1

你可以在每添加一行之后调用datagridview的update方法:

dataGridView1.Update();
于 2012-11-10T13:21:02.917 回答
0
Ping ping = new Ping();

for(int i = 0; i<= number_of_pings; i++)
{
    PingReply pingReply = ping.Send(address_to_send);

    dataGridView1.Rows.Add(address_to_send, pingReply.Address, pingReply.RoundtripTime, pingReply.Status);
    dataGridView1.PerformLayout();
    Application.DoEvents();
}
于 2012-11-10T13:34:45.733 回答