Hola, encontramos la solución a lo que estabas buscando, has scroll y la verás aquí.
Solución:
Hay dos casos de uso comunes que he encontrado:
- Cuando está implementando una interfaz que permite llamadas asíncronas, pero su implementación es síncrona.
- Cuando estás simulando/simulando código asincrónico para realizar pruebas.
Un ejemplo sería un método que hace uso de un caché. Si el resultado ya se calculó, puede devolver una tarea completada con el valor (usando Task.FromResult
). Si no es así, continúa y devuelve una tarea que representa el trabajo en curso.
Ejemplo de caché: Ejemplo de caché usando Task.FromResult para valores precalculados
Úselo cuando desee crear un método disponible sin usar la palabra clave asíncrona. Encontré este ejemplo:
public class TextResult : IHttpActionResult
string _value;
HttpRequestMessage _request;
public TextResult(string value, HttpRequestMessage request)
_value = value;
_request = request;
public Task ExecuteAsync(CancellationToken cancellationToken)
var response = new HttpResponseMessage()
Content = new StringContent(_value),
RequestMessage = _request
;
return Task.FromResult(response);
Aquí está creando su propia implementación de la interfaz IHttpActionResult para usarla en una acción de Web Api. Se espera que el método ExecuteAsync sea asíncrono, pero no tiene que usar la palabra clave async para que sea asíncrono y esté disponible. Como ya tiene el resultado y no necesita esperar nada, es mejor usar Task.FromResult.
Agradecemos que quieras añadir valor a nuestra información participando con tu veteranía en las explicaciones.