2011-02-16 81 views
-1
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),该检查的一部分,如果没有连接或不并根据,我想我的应用程序关闭(退出) 我可以在控制台日志中看到“没有连接”,但应用继续运行... 如何正确退出该应用?上开始关闭自C#应用程序,如果没有互联网连接

回答

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; 
} 
+0

工作得很好,但System.Windows.Forms.Application.Exit();或者只是关闭();不要退出我的应用程序... – frytaz 2011-02-16 08:19:50

0

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

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

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

但是考虑一下 - 如果你的网络检查成功,但用户的网络连接会立即下降(并且在你做任何有用的工作之前)。

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

您是否花时间处理间歇性连接,并为您的用户尽力而为?无论如何,你将不得不处理这些问题,为什么要给用户删除你的应用程序的理由?

相关问题