Sobes.tech
Junior

Como é que a palavra-chave await é usada em C#?

sobes.tech IA

Resposta da IA

A palavra-chave await é usada em C# para esperar de forma não bloqueante a conclusão de uma operação assíncrona.

A utilização de await só é possível dentro de métodos assíncronos marcados com o modificador async.

Quando a execução atinge a instrução await, o fluxo de controle retorna ao chamador, e o método é "suspenso" até que a tarefa esperada seja concluída. Após a conclusão da tarefa, a execução do método é retomada de onde parou.

Isso permite liberar a thread que chamou (por exemplo, a thread da interface do usuário ou a thread do servidor web) para realizar outras tarefas, melhorando a responsividade e a escalabilidade da aplicação.

public async Task<string> GetDataAsync()
{
    // Simulação de uma operação assíncrona prolongada
    await Task.Delay(2000);
    return "Dados recebidos";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Início do processamento...");
    string result = await GetDataAsync(); // Aguarda a conclusão do GetDataAsync sem bloquear
    Console.WriteLine($"Resultado: {result}");
    Console.WriteLine("Processamento concluído.");
}

A palavra-chave await pode ser aplicada a:

  1. Tarefas (Task, Task<T>, ValueTask, ValueTask<T>): cenário mais comum.
  2. tipos awaitables: objetos que possuem um método GetAwaiter(), retornando um tipo com os métodos IsCompleted, GetResult() e OnCompleted() (para suporte à continuação).

O uso de await torna o código assíncrono mais legível e semelhante ao código síncrono, eliminando a necessidade de escrever manualmente código de continuação ou usar callbacks.