DEV Community

Juarez Júnior
Juarez Júnior

Posted on

Dica C#: Use async e await para Operações Assíncronas

Vamos falar sobre o uso de async e await para Operações Assíncronas, uma prática essencial para melhorar a responsividade e a eficiência de aplicativos C#.

Explicação:

O C# oferece suporte para programação assíncrona por meio de async e await, que permitem realizar operações que consomem tempo, como chamadas de APIs, acesso a banco de dados ou leitura de arquivos, sem bloquear o thread principal. Isso melhora a experiência do usuário em aplicativos com interfaces gráficas e permite que servidores lidem com mais solicitações simultâneas.

Ao usar async e await, o código se torna mais legível e fácil de entender em comparação com callbacks ou eventos. Certifique-se de usar o sufixo “Async” nos métodos assíncronos para seguir as convenções de nomenclatura.

Código:

using System;
using System.Net.Http;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        string url = "https://api.github.com/repos/dotnet/runtime";

        using HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("User-Agent", "C# App");

        string resposta = await client.GetStringAsync(url);

        Console.WriteLine("Dados da API:");
        Console.WriteLine(resposta);
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

No exemplo, usamos HttpClient para buscar dados de uma API de forma assíncrona. O uso de await garante que a execução seja suspensa até que a operação seja concluída, sem bloquear o restante da aplicação.

Conclusão:

O uso de async e await para Operações Assíncronas melhora a eficiência e a responsividade de aplicações C#. Isso permite que tarefas demoradas sejam executadas sem bloquear o restante do programa, proporcionando uma experiência melhor para o usuário.

Espero que essa dica ajude você a utilizar async e await para escrever código mais eficiente e responsivo! Até a próxima.

Código fonte: GitHub

Top comments (0)