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:
- Tarefas (Task, Task<T>, ValueTask, ValueTask<T>): cenário mais comum.
- tipos awaitables: objetos que possuem um método
GetAwaiter(), retornando um tipo com os métodosIsCompleted,GetResult()eOnCompleted()(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.