Я пытаюсь проверить метод http-запроса follwing
public async Task<HttpContent> Get(string url)
{
using (HttpClient client = new HttpClient())
// breakpoint
using (HttpResponseMessage response = await client.GetAsync(url))
// can't reach anything below this point
using (HttpContent content = response.Content)
{
return content;
}
}
Однако отладчик, похоже, пропускает код ниже второго комментария. Я использую Visual Studio 2015 RC, любые идеи? Я также попытался проверить окно "Задачи" и ничего не увидел
Изменить: найдено решение
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace ConsoleTests
{
class Program
{
static void Main(string[] args)
{
Program program = new Program();
var content = program.Get(@"http://www.google.com");
Console.WriteLine("Program finished");
}
public async Task<HttpContent> Get(string url)
{
using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.GetAsync(url).ConfigureAwait(false))
using (HttpContent content = response.Content)
{
return content;
}
}
}
}
Оказывается, потому что это было консольное приложение на С#, оно закончилось после того, как я закончил основной поток, потому что после добавления Console.ReadLine() и ожидания бит возвращался запрос. Я догадался, что С# будет ждать, пока моя задача выполнится, а не закончится раньше, но я полагаю, что я ошибся. Если кто-нибудь сможет объяснить, почему это произошло, было бы хорошо.