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

何らかの理由で、 に送り込まれるとdataGridView1dataGridview1一度に 5 つの (または指定した ping の数) フィールドのデータが送り込まれます。私がやろうとしているのは、dataGridView1定期的にいっぱいにすることです。たとえば、各 ping が完了すると、その出力が に出力されdataGridView1、次の ping が開始されます。

アイデア?

4

3 に答える 3

1

行を追加するたびに、datagridview の update メソッドを呼び出すことができます。

dataGridView1.Update();
于 2012-11-10T13:21:02.917 に答える
1

ニーズに最適なソリューションの 1 つは BackgroundWorker です。クラスで空の DataTable を定義し、Ping コードを BackgroundWorker_DoWork メソッドに入れます。次に、結果を DataTable に追加します。このメソッドが完了すると、BackgroundWorker_WorkerComplete が起動されます。次の ping のために DoWork メソッドを再度実行する必要があります。

于 2012-11-10T13:24:06.293 に答える
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 に答える