Nuestro team de redactores ha estado horas investigando para darle resolución a tus búsquedas, te compartimos la solución de modo que esperamos serte de mucha ayuda.
Solución:
public Task DoSomething()
return Task.CompletedTask;
No hay necesidad de la async
.
Si está usando una versión anterior de .NET, use esto:
public Task DoSomething()
return Task.FromResult(0);
Si encuentra que necesita devolver un resultado pero aún no necesita await
cualquier cosa, prueba;
public Task DoSomething()
return Task.FromResult(new Result())
o, si realmente desea usar async (no recomendado);
public async Task DoSomething()
return new Result();
Veo que la mayoría de la gente prefiere dejar de lado el async
y use Task.ComletedTask
en lugar de. Pero incluso si await
no se usa, todavía hay una gran diferencia en el manejo de excepciones
Considere el siguiente ejemplo
static async Task Main(string[] args)
Task task = test(); // Will throw exception here
await task;
Task taskAsync = testWithAsync();
await taskAsync; // Will throw exception here
static Task test()
throw new Exception();
return Task.CompletedTask; //Unreachable, but left in for the example
static async Task testWithAsync()
throw new Exception();
Utilizando
test().ContinueWith(...);
o Task.WhenAll(test())
puede resultar en un comportamiento inesperado.
Por lo tanto, prefiero async
en lugar de Task.CompletedTask
o Task.FromResult
.