¿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()
?