Я написал метод, использующий HttpClient
:HttpClient.GetStringAsync блокировки в консоли приложения
private static async Task<string> DownloadString(string url)
{
var uri = new Uri(url);
using (var client = new HttpClient())
{
HttpRequestHeaders headers = client.DefaultRequestHeaders;
headers.Accept.ParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
headers.AcceptEncoding.ParseAdd("gzip, deflate");
headers.AcceptLanguage.ParseAdd("en-US,en;q=0.5");
headers.Connection.ParseAdd("keep-alive");
headers.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0");
headers.Host = uri.Host;
return await client.GetStringAsync(uri).ConfigureAwait(false);
}
}
Тогда я вызываю его в Main
методе консольное приложение так:
Console.WriteLine("Downloading");
string dom = DownloadString("http://www.shaanig.org/f8/index1.html").Result;
Console.WriteLine(dom);
Все произведения отлично, если у меня есть подключение к Интернету, или если он работает, пока у меня нет подключения к Интернету (в этом случае он генерирует исключение). Но если я отключу свой интернет, пока он загружается, он просто висит там. Без исключений. Он просто висит.
Может кто-нибудь объяснить мне, что здесь происходит? И как я могу это исправить?
определить «зависает»? –
взгляните на этот ответ http://stackoverflow.com/questions/20696320/checking-internet-connection-with-httpclient –
@DavidHaim, пытаясь определить это, я обнаружил, что он бросает после колоссальных 100 секунд. –