C# · Intermediário · Inglês · Técnico
async void
Método assíncrono sem retorno de Task. O chamador não consegue aguardar nem capturar suas exceções, que sobem direto ao contexto de sincronização e podem derrubar o processo.
Onde usar
Aparece em code reviews como um alerta: async void só é aceitável em manipuladores de evento, como o clique de um botão. Em qualquer outro caso, retorne Task para o chamador poder dar await e tratar erros.
Em código
async void Clicar(object? s, EventArgs e)
{
await Task.Delay(100);
throw new Exception("x"); // derruba o app
}Exemplos
Never use async void outside of event handlers.
Nunca use async void fora de manipuladores de evento.
That async void crashed the process with the error.
Esse async void derrubou o processo com o erro.
Cuidado
Não use para métodos 'dispare e esqueça': a exceção não fica presa em uma Task e pode encerrar a aplicação.
Antônimos
async Task