Chamar Task.Wait () imediatamente após uma operação assíncrona é equivalente a executar a mesma operação de forma síncrona?

Em outras palavras, é

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

funcionalmente idêntico a

SomeLongRunningOperation();

Em outras palavras, é

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

funcionalmente idêntico a

var result = SomeOtherLongRunningOperation();

De acordo comTask.Wait e Inlining, se a tarefa que está sendoWaitJá começou a execução,Wait tem que bloquear. No entanto, se ele não começou a executar,Wait poderá extrair a tarefa de destino do agendador no qual estava na fila e executá-la em linha no encadeamento atual.

Esses dois casos são apenas uma questão de decidir em qual thread a Tarefa será executada e, se você espera o resultado de qualquer maneira, isso importa?

Existe algum benefício em usar o formulário assíncrono sobre o formulário síncrono, se nada for executado entre a chamada assíncrona e oWait()?

questionAnswers(1)

yourAnswerToTheQuestion