Что произойдет, если я не жду задание?

Рассмотрим этот пример:

var task = DoSomething()
bool ready = await DoSomethingElse();
if (!ready) 
  return null;

var value = await DoThirdThing(); // depends on DoSomethingElse
return value + await task;

DoSomething выполняет очень важную работу, которая может занять некоторое время, поэтому мы начинаем ее сначала.
Тем временем мы проверяем, готовы ли мы сDoSomethingElse и выйти рано, если нет.
Мы называемDoThirdThing только если мыreadyВселенная могла бы взорваться.

Мы не можем использоватьTask.WhenAll какDoThirdThing зависит отDoSomethingElse и мы тоже не хотим ждатьDoSomething потому что мы хотим вызвать два других метода одновременно, если это возможно.

Вопрос: Что происходит сtask если мы неready и выйти рано?

Будут ли какие-либо исключения, которые он бросает, быть повторно брошеныSynchronizationContext?
Есть ли проблемы, еслиtask завершает нормально, так как никто не потребляет его значение?

Следовать за: Есть ли аккуратный способ убедитьсяtask ожидается?

Мы могли бы простоawait task если мы неreadyОднако, если бы было 50 условий выхода, это было бы очень утомительно.
Может лиfinally блок будет использоваться дляawait task и повторно выбросить потенциальные исключения? Еслиtask завершено нормально, это будет ждать снова вfinally блок, но это не должно вызывать никаких проблем?

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

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