我正在开发我的第一款名为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.");
}
答案 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";
// ...
}
您可以进一步将上述内容封装到另一个方法中,但这可能有点过分。