如何在便携式类库中检查互联网连接

本文关键字:检查 互联网 连接 类库 便携式 | 更新日期: 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();
}