¿Llamar a Task.Wait () inmediatamente después de una operación asincrónica es equivalente a ejecutar la misma operación sincrónicamente?

En otras palabras, es

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

funcionalmente idéntico a

SomeLongRunningOperation();

Dicho de otra manera, es

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

funcionalmente idéntico a

var result = SomeOtherLongRunningOperation();

De acuerdo aTarea.Esperar y en línea., si la tarea esWait’Ya ha comenzado la ejecución,Wait Tiene que bloquear. Sin embargo, si no ha comenzado a ejecutarse,Wait puede extraer la tarea de destino del planificador en el que estaba en cola y ejecutarla en línea en el hilo actual.

¿Son esos dos casos simplemente una cuestión de decidir en qué hilo se ejecutará la Tarea, y si de todos modos está esperando el resultado, importa?

¿Hay algún beneficio al usar la forma asincrónica sobre la forma síncrona, si no se ejecuta nada entre la llamada asincrónica y laWait()?

Respuestas a la pregunta(1)

Su respuesta a la pregunta