应用程序崩溃每次都失败ping C#

时间:2014-08-12 18:02:36

标签: c#

我正在开发我的第一款名为Minecraft Wiglet的应用程序。它砰砰地响应重要的我的世界网站,它可以从一开始。当我测试我的应用程序时,它成功地ping了网站 我在线,但是当我离线时,应用程序在第四行崩溃,它说“未处理的pingExpection”我是编码的新手,所以对我来说很容易:)

    private void button1_Click(object sender, EventArgs e)
    {
        Ping ping = new Ping();
        PingReply pingresult = ping.Send("minecraftturk.com"); //Crashed here
        if (pingresult.Status.ToString() == "Success")
        {
            label5.Text = "Online";
        }
        else if (pingresult.Status.ToString() == "Failure")
        {
            label5.Text = "Offline";
        }

        Ping ping1 = new Ping();
        PingReply pingresult1 = ping.Send("minecraft.net");
        if (pingresult.Status.ToString() == "Success")
        {
            label3.Text = "Online";
        }
        else if (pingresult.Status.ToString() == "Failure")
        {
            label3.Text = "Offline";
        }
        Ping ping2 = new Ping();
        PingReply pingresult2 = ping.Send("www.planetminecraft.com");
        if (pingresult.Status.ToString() == "Success")
        {
            label10.Text = "Online";
        }
        else if (pingresult.Status.ToString() == "Failure")
        {
            label10.Text = "Offline";
        }
        MessageBox.Show("Durum başarıyla güncellendi.");
    }

1 个答案:

答案 0 :(得分:3)

您需要捕获并处理异常。我建议将ping操作包装成另一种方法:

private bool CanPing(string url)
{
    try
    {
        return new Ping().Send(url).Status == IPStatus.Success;
    }
    catch (PingException)
    {
        return false;
    }
}

然后你可以为每个站点调用CanPing,并且在处理用户只在一行中离线的情况时会返回true或false,如下所示:

private void button1_Click(object sender, EventArgs e)
{
    label10.Text = CanPing("www.planetminecraft.com") ? "Online" : "Offline";
    // ...
}

您可以进一步将上述内容封装到另一个方法中,但这可能有点过分。