c# - While 循环使用 Ping 命令

标签 c# ping

我在编写一个非常简单的程序时遇到了问题。我想要它,以便当我单击 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/

相关文章:

c# - 为什么 Stack、Queue 和 List 在删除项目后不收缩内部数组?

c# - 递归循环 (C#)

c# - BackgroundWorker 仍然卡住 UI

batch-file - 使用 ping.exe 的 ERRORLEVEL 测试 IP 可达性

linux - 在成功 ping 时打开 firefox 的 Bash 脚本

c# - 通过 Azure Functions 对 Azure AD 中的用户进行身份验证(验证用户名和密码)

c# - 正则表达式以确保在诸如 "05123:12315"的字符串中,第一个数字小于第二个数字?

php - 如何使用 PHP ping 服务器端口?

php - 适用于 Windows 服务器和 Cisco 交换机的简单 PHP 正常运行时间监视器

mysql - 从 MySQL 存储过程 Ping 网站