[C#] ¿TaskResult es lo mismo que .GetAwaiter.GetResult ()?


Answers

https://github.com/aspnet/Security/issues/59

"Una última observación: debe evitar usar Task.Result y Task.Wait tanto como sea posible ya que siempre encapsulan la excepción interna en una AggregateException y reemplazan el mensaje por uno genérico (se produjeron uno o más errores), lo que hace que la depuración sea más difícil. . Incluso si la versión síncrona no se debe usar con Task.GetAwaiter().GetResult() frecuencia, debería considerar usar Task.GetAwaiter().GetResult() lugar. "

Question

Recientemente estuve leyendo un código que usa muchos métodos asíncronos, pero a veces es necesario ejecutarlos de forma síncrona. El código hace:

Foo foo = GetFooAsync(...).GetAwaiter().GetResult();

¿Es esto lo mismo que

Foo foo = GetFooAsync(...).Result;

?




Otra diferencia es cuando la función async devuelve solo Task vez de Task<T> luego no puede usar

GetFooAsync(...).Result;

Mientras

GetFooAsync(...).GetAwaiter().GetResult();

todavía funciona.

Sé que el código de ejemplo en la pregunta es para el caso Task<T> , sin embargo, la pregunta se hace en general.