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

C# 每次ping C失败时,应用程序都会崩溃#,c#,C#,我正在开发我的第一个应用程序,名为Minecraft Wiglet。它可以ping重要的雷舰站点,并且可以在starup中启动。当我测试我的应用程序时,它在 我是在线的,但当我离线时,应用程序在第四行崩溃了,上面写着“未处理的pingExpection”,我是新的编程人员,所以请对我放松:) 您需要捕获并处理异常。我建议将ping打包到另一种方法中,如下所示: private bool CanPing(string url) { try { return new

我正在开发我的第一个应用程序,名为Minecraft Wiglet。它可以ping重要的雷舰站点,并且可以在starup中启动。当我测试我的应用程序时,它在 我是在线的,但当我离线时,应用程序在第四行崩溃了,上面写着“未处理的pingExpection”,我是新的编程人员,所以请对我放松:)


您需要捕获并处理异常。我建议将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";
    // ...
}

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

您需要添加一些try/catch。请添加异常。通过重新访问您的问题,单击编辑,并将异常粘贴到问题中来实现。另一个(不相关的)改进是使用
Status
,并避免使用
ToString()
@gunr2171好主意!谢谢。是的,当我添加label5=“Online”时,应用程序不会崩溃;尝试它会变成一种遥不可及的感觉code@asi_turk不要将标签文本代码放入
扫描
;将其放入按钮单击处理程序中。
private void button1_Click(object sender, EventArgs e)
{
    label10.Text = CanPing("www.planetminecraft.com") ? "Online" : "Offline";
    // ...
}