我在编写一个非常简单的程序时遇到了问题。我想要它,以便当我单击 btnPing 时,它会每 1 秒向 google.com 发送一个 ping,并以毫秒为单位返回 ping。在我想循环操作之前,它工作得很好。在 while 循环之外,代码有效,但每次我想发送 ping 时都需要单击按钮。但是当我将代码放入循环中时,它会卡住。我已经用 for 循环和 while 循环试过了。该程序未返回任何错误。是什么让我的程序卡住?
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);
}
}
最佳答案
原因是因为您的循环阻塞 UI,而 UI 又无法自行更新并且似乎被卡住(而实际上程序正在循环中执行 ping)。您必须在单独的线程 中异步(即与 UI 代码并行)运行它。要开始,请参阅 BackgroundWorker
class 提供的示例。 .
关于c# - While 循环使用 Ping 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16762788/