如果没有互联网连接,c#app会在启动时关闭自己

时间:2011-02-16 08:11:15

标签: c#

if(IsConnected() == false)
{
    Console.WriteLine("no connection");
    System.Windows.Forms.Application.Exit();
}

InitializeComponent();

...

public static bool IsConnected()
{
    System.Uri Url = new System.Uri("http://google.com");

    System.Net.WebRequest WebReq;
    System.Net.WebResponse Resp;
    WebReq = System.Net.WebRequest.Create(Url);            

    try
    {
        Resp = WebReq.GetResponse();
        Resp.Close();
        WebReq = null;
        return true;
    }

    catch
    {
        WebReq = null;
        return false;
    }
}

以下是代码(c#.net 1.0)的一部分,它检查是否存在连接,并根据我希望我的应用关闭(退出) 我可以在控制台日志中看到“没有连接”,但应用程序继续运行... 如何在那里正确退出该应用程序?

2 个答案:

答案 0 :(得分:0)

public static bool IsConnected()
{
  HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create("http://www.google.com");

  HttpWebResponse HttpWResp = (HttpWebResponse)HttpWReq.GetResponse();
  bool isconnected = (HttpWResp.StatusCode == HttpStatusCode.OK);
  HttpWResp.Close();
  return isconnected;
}

答案 1 :(得分:0)

如果您正在编写控制台应用程序,则只需要从Main方法返回(并且不运行任何非后台线程)。 Application.Exit仅针对Windows窗体应用程序执行工作,即使这样,也不会导致应用程序实际退出:

  

Exit方法停止所有线程上所有正在运行的消息循环,并关闭应用程序的所有窗口。此方法不一定强制应用程序退出

如果你正在编写一个Windows窗体应用程序,(并且你有一个主方法)那么你需要调查你的代码在调用Application.Run之后正在做什么,这是哪里消息循环正在运行 - 从消息循环停止时返回此调用。

但请考虑一下 - 如果您的互联网检查成功,但用户的互联网连接会在之后立即下降(在您做任何有用的工作之前)。

或者由于间歇性连接而导致检查失败,但之后会立即再次使用。

您的时间不会更好地用于处理间歇性连接,并为您的用户尽最大努力吗?无论如何,您将不得不处理这些问题,为什么要让用户删除您的应用程序?