2012-11-10 40 views
1

所以我有了這個代碼添加:當其被泵入一個dataGridView1定期加入一個行的DataGridView,但所有行得到在同一時間

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有五(或者我指定的ping的數量)數據字段立即被泵送到它。 我想要做的是定期填寫dataGridView1。例如。在每次ping完成之後,其輸出到dataGridView1並且下一個ping開始,依此類推。

想法?

+1

難道真的將所有5一次?或者這種情況發生得很快?根據這段代碼,它看起來很快。你想讓網格填滿更慢嗎? – tallseth

+0

是的,也許它只是快速填滿。 – obious

回答

1

可在每次​​調用後在DataGridView的更新方法添加一行:

dataGridView1.Update(); 
1

一個最好的解決方案,爲您的需求就是BackgroundWorker的。 在你的類中定義一個空的DataTable,並將Ping代碼放入BackgroundWorker_DoWork方法中。然後將結果添加到DataTable。 完成此方法後,BackgroundWorker_WorkerComplete已啓動。您應該爲下一次ping再次運行DoWork方法。

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(); 
} 
相關問題