Поэтому я хотел бы проверить подключение к Интернету в портативной библиотеке классов.Как проверить подключение к Интернету в портативной библиотеке классов
До сих пор я использовал этот метод GetResponse() in C#
Но это не возвращает логическое значение, чтобы сказать мне, если у меня есть связь или нет.
Пока мой код выглядит следующим образом:
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 имеет неправильный тип возвращаемого .. Как я могу это сделать?
Пожалуйста, имейте в виду, что это в портативном библиотеки классов, поэтому метод GetResponse() не существует
'AsyncCallback' возвращает пустоту, так 'FinishRequest' должен сделать то же самое. Вы можете создать класс-оболочку, содержащий «HttpWebRequest» и логическое значение, и передать это в «BeginGetResponse». Затем логическое значение можно установить в «FinishRequest», если это необходимо, и ссылаться на «CheckForInternetConnection». Однако я не знаю, является ли это самым элегантным решением. –
Причина, по которой я избегал этого решения, заключается в том, что я не хочу, чтобы 'CheckForInternetConnection()' возвращал значение этой переменной до того, как был выполнен AsyncCallback. Например. давая мне неправильное значение – user1
Вы можете посмотреть [Task.FromAsync] (http://msdn.microsoft.com/en-us/library/dd321448 (v = vs.110) .aspx), который позволит вам подождать в результате чего ничего не будет продолжаться до тех пор, пока вызов не будет завершен. –