Что происходит во время ожидания результата задачи?

Я использую HttpClient для публикации данных в удаленной службе в проекте .NET 4.0. Меня не интересует эта блокировка операций, поэтому я решил, что могу пропустить ContinueWith или async / await и использовать Result.

Во время отладки я столкнулся с проблемой, когда удаленный сервер не отвечал на запросы. Когда я проходил по коду, казалось, что мой код просто перестал работать на третьей строке ... текущая строка указателя стека перестала выделяться желтым цветом и не перешла на следующую строку. Он просто исчез. Мне потребовалось некоторое время, чтобы понять, что я должен ждать запроса на тайм-аут.

var client = new HttpClient();
var task = client.PostAsync("http://someservice/", someContent);
var response = task.Result;

Насколько я понимаю, вызов Result on the Task приводил к тому, что код выполнялся синхронно, и вел себя примерно так (я знаю, что в HttpClient нет метода Post):

var client = new HttpClient();
var response = client.Post("http://someservice/", someContent);

Я не уверен, что это плохо, я просто пытаюсь обдумать это. Правда ли, что в силу того факта, что HttpClient возвращает задачи вместо результатов напрямую, мое приложение автоматически использует асинхронность, даже когда я думаю, что я ее избегаю?

Ответы на вопрос(2)

Ваш ответ на вопрос