Я использую HttpClient для отправки данных на удаленную службу в проекте .NET 4.0. Я не беспокоюсь об этой блокировке операции, поэтому я решил, что могу пропустить ContinueWith или async/await и использовать Result.
Во время отладки я столкнулся с проблемой, когда удаленный сервер не реагировал. Когда я прошел через код, мне показалось, что мой код просто перестает работать в третьей строке... текущая строка указателя стека перестает выделяться желтым цветом и не переходит к следующей строке. Он просто исчез. Мне потребовалось некоторое время, чтобы понять, что я должен дождаться запроса на тайм-аут.
var client = new HttpClient();
var task = client.PostAsync("http://someservice/", someContent);
var response = task.Result;
Мое понимание заключалось в том, что вызов результата в Задаче заставил код выполнять синхронно, чтобы вести себя как это (я знаю, что в HttpClient нет метода Post):
var client = new HttpClient();
var response = client.Post("http://someservice/", someContent);
Я не уверен, что это плохо, я просто пытаюсь обойти это. Это правда, что в силу того факта, что HttpClient возвращает результаты непосредственно вместо результатов, мое приложение автоматически использует асинхронность, даже когда я думаю, что избегаю этого?