我遇到了一個非常簡單的程序,我正在做的麻煩。我希望這樣,當我點擊btnPing時,它會每1秒發送一次ping到google.com,並以毫秒爲單位返回ping。它完美的工作,直到我想循環的行動。在while循環之外,代碼可以工作,但每次我想發送ping命令時都需要點擊該按鈕。但是當我把代碼放到一個循環中時,它會凍結。我已經用for循環和while循環嘗試了它。該程序沒有返回任何錯誤。什麼讓我的程序凍結?while循環與Ping命令
Ping pingClass = new Ping();
private void btnPing_Click(object sender, EventArgs e)
{
while (true)
{
PingReply pingReply = pingClass.Send("google.com");
rtxtPing.Text = rtxtPing.Text + "\r\n" + (pingReply.RoundtripTime.ToString() + "ms");
System.Threading.Thread.Sleep(1000);
}
}
除此之外,在風格上,我想看看調度呼叫ping 1秒定時器,而不是使用while/sleep循環。即使在後臺線程中,/睡眠也是一個不好的練習。 http://stackoverflow.com/questions/2822441/system-timers-timer-threading-timer-vs-thread-with-whileloop-thread-sleep-for – Alan
@Alan我同意。另一種方法是在定時器上設置一個事件來執行ping操作,並讓按鈕只啓用定時器。 – mclaassen