ExpertiDict

C# · Intermediário · Inglês · Técnico

async void

/əˈsɪŋk vɔɪd/substantivo

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

Veja também

Todos os termos de C#