Em que cenários alguém gostaria de usar
public async Task AsyncMethod(int num)
ao invés de
public async void AsyncMethod(int num)
O único cenário em que consigo pensar é se você precisa da tarefa para acompanhar seu progresso.
Além disso, no método a seguir, são assíncronas e aguardam palavras-chave desnecessárias?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleep
com suas tarefas você deve await Task.Delay(num)
em vez
Task.Delay
não é Task.AsyncDelay
como todos os métodos da tarefa são assíncronos
async void
alternativa async Task
. O método travou porque estava usando um objeto de contexto do Entity Framework declarado como membro do controlador antes que o método fosse executado. A estrutura descartou o controlador antes que seu método fosse executado. Mudei o método para assíncrono de tarefas e funcionou.
Foo()
se tornariaFooAsync()
.