上开始关闭自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),该检查的一部分,如果没有连接或不并根据,我想我的应用程序关闭(退出) 我可以在控制台日志中看到“没有连接”,但应用继续运行... 如何正确退出该应用?上开始关闭自C#应用程序,如果没有互联网连接
答
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;
}
答
如果您正在编写控制台应用程序,您只需要它从Main方法返回(并且没有任何非后台线程正在运行)。 Application.Exit
只执行对窗口工作窗体应用程序,即使这样,不会导致应用程序实际上退出:
exit方法停止所有线程所有正在运行的消息循环,并关闭应用程序的所有窗口。此方法不一定强制应用程序退出
如果你正在编写一个Windows窗体应用程序,(你有一个主要的方法),那么你需要调查你的代码在调用Application.Run
后做,这是消息循环运行的地方 - 这个调用是从消息循环停止时返回的。
但是考虑一下 - 如果你的网络检查成功,但用户的网络连接会立即下降(并且在你做任何有用的工作之前)。
或者检查由于间歇性连接而失败,但之后会立即再次使用。
您是否花时间处理间歇性连接,并为您的用户尽力而为?无论如何,你将不得不处理这些问题,为什么要给用户删除你的应用程序的理由?
工作得很好,但System.Windows.Forms.Application.Exit();或者只是关闭();不要退出我的应用程序... – frytaz 2011-02-16 08:19:50