Como funciona um método assíncrono em C#?
sobes.tech IA
Resposta da IA
O método assíncrono em C# permite executar operações que podem levar um tempo prolongado (por exemplo, entrada/saída, pedidos de rede) sem bloquear o thread principal de execução.
Ao chamar um método assíncrono marcado com a palavra-chave async, o controlo é transferido para o código que o chamou até que a operação assíncrona seja concluída. A operação é executada em segundo plano (por exemplo, usando um pool de threads ou mecanismos de entrada/saída do sistema).
A palavra-chave await dentro do método assíncrono indica onde a operação assíncrona pode ser suspensa. Quando a execução atinge await, o controlo é devolvido ao código que chamou, e a continuação do método é agendada para ser executada quando a operação esperada terminar.
O resultado da operação assíncrona (ou uma exceção) é então devolvido à continuação do método assíncrono, onde é processado. O estado do método assíncrono é gerido automaticamente pelo compilador C#, que o transforma numa máquina de estados finita.
public async Task<string> GetDataAsync(string url)
{
// Simulação de uma operação de entrada/saída prolongada
using (var httpClient = new HttpClient())
{
string result = await httpClient.GetStringAsync(url); // await: a execução do método pode ser suspensa
return result;
}
}
// Exemplo de chamada a um método assíncrono
public async Task ProcessDataAsync(string url)
{
Console.WriteLine("Início do carregamento de dados...");
string data = await GetDataAsync(url); // Espera pela conclusão da operação assíncrona
Console.WriteLine("Dados carregados: " + data.Length + " caracteres.");
}