¿Bajo qué escenarios uno querría usar
public async Task AsyncMethod(int num)
en vez de
public async void AsyncMethod(int num)
El único escenario en el que puedo pensar es si necesita la tarea para poder seguir su progreso.
Además, en el siguiente método, ¿son innecesarias las palabras clave asíncronas y en espera?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleep
con tus tareas que deberías en su await Task.Delay(num)
lugar
Task.Delay
no es Task.AsyncDelay
que todos los métodos en la tarea sean asíncronos
async void
lugar async Task
. El método se bloqueó porque estaba usando un objeto de contexto de Entity Framework declarado como miembro del controlador antes de que el método terminara de ejecutarse. El marco eliminó el controlador antes de que su método terminara de ejecutarse. Cambié el método a Tarea asíncrona y funcionó.
Foo()
seríaFooAsync()
.