c# Проверить состояние задачи после ожидания - PullRequest
2 голосов
/ 12 июля 2020

Видел такой код в производстве:

var task = new HttpClient().GetAsync(u);
var response = await task;
if (task.IsCompletedSuccessfully)
{
   Console.WriteLine($"Task is faulted: {task}");
}

Вопрос: Есть ли смысл проверять состояние задачи после ключевого слова await? Насколько мне известно, компилятор построит конечный автомат «вокруг» этого кода, который выдает исключение в случае ошибки. Исходя из этого, нет смысла проверять состояние Задач.

Я что-то упустил?

Спасибо

1 Ответ

4 голосов
/ 12 июля 2020

Нет.

Если есть исключение, то await выбросит его. По сути, он вернет не задачу, а возвращаемое значение или исключение.

Таким образом, нет смысла оценивать задачу дальше.

В противном случае выигрыш от ожидания был бы весьма значительным. незначительно;)

...