Вызывает ли вызов Task.Wait () сразу после асинхронной операции эквивалентно выполнению этой же операции синхронно?

Другими словами, это

var task = SomeLongRunningOperationAsync();
task.Wait();

функционально идентичен

SomeLongRunningOperation();

Иными словами, это

var task = SomeOtherLongRunningOperationAsync();
var result = task.Result;

функционально идентичен

var result = SomeOtherLongRunningOperation();

В соответствии сTask.Wait and Inlining, если заданиеWaitУже начал исполнение,Wait должен заблокировать. Однако, если он не начал выполняться,Wait может быть в состоянии извлечь целевую задачу из планировщика, к которому она была поставлена ​​в очередь, и выполнить ее встроенным в текущем потоке.

Являются ли эти два случая просто вопросом о том, в каком потоке будет выполняться Задача, и если вы все равно ожидаете результата, имеет ли это значение?

Есть ли преимущество использования асинхронной формы по сравнению с синхронной формой, если между асинхронным вызовом иWait()?

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

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