如何在便携式类库中检查互联网连接
本文关键字:检查 互联网 连接 类库 便携式 | 更新日期: 2023-09-27 18:22:05
所以我想在可移植类库中检查互联网连接。
到目前为止,我已经在C#中使用了GetResponse()方法
但这不会返回布尔值来告诉我是否有连接。
到目前为止,我的代码如下:
public static bool CheckForInternetConnection()
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
request.UseDefaultCredentials = true;
request.BeginGetResponse(new AsyncCallback(FinishRequest), request);
}
catch
{
return false;
}
}
private static bool FinishRequest(IAsyncResult result)
{
HttpWebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
{
return true;
}
else
{
return false;
}
}
但我在new AsyncCallback()
的线路上收到一个错误,说FinishRequest的返回类型错误。。我该怎么做?
请记住,这是在Portable类库中,因此方法GetResponse()不存在
您可以这样使用手动设置:
private static ManualResetEvent evt = new ManualResetEvent(false);
public static bool CheckForInternetConnection()
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
request.UseDefaultCredentials = true;
request.BeginGetResponse(new AsyncCallback(FinishRequest), request);
evt.WaitOne();
return request.HaveResponse;
}
catch
{
return false;
}
}
private static void FinishRequest(IAsyncResult result)
{
HttpWebResponse response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
evt.Set();
}