DEV Community

Gustavo Inocencio
Gustavo Inocencio

Posted on

Programacão assíncrona no C#

A programação assíncrona é importante nos nossos sistemas, pois caso fosse necessário aguardar cada processo, a experiência do usuário seria afetada com o bloqueio de todos os processos.

A aplicação não responderia e o usuário concluiria que houve uma falha ao invés de estar apenas aguardando o fim do processo.

Quando são utilizados métodos assíncronos a aplicação continua a responder.

Essa alternativa é importante para funções que demandam tempo de resposta como uma consulta a uma API ou uma gravação de documentos.

Para utilizar facilmente o recurso de programacão assíncrona as características a seguir resumem bem o que um método assíncrono necessita:

  • A assinatura do método inclui um modificador async

  • Por convenção o nome de um método assíncrono termina com o sufixo Async

  • O tipo do retorno é um dos seguintes:

      1. Task<TResult>
      2. Task 
      3. void 
Enter fullscreen mode Exit fullscreen mode

O primeiro caso ocorre quando o método contém um retorno especificando seu tipo como por exemplo int

Para o caso de métodos que não contém um retorno é usado o Task.

O último caso é usado para event handlers

  • O método deve incluir ao menos um operador await que marca o ponto onde o método não pode continuar até que a operação assíncrona seja finalizada.

Exemplo utilizando as características mencionadas:

public async Task<int> GetUrlContentLengthAsync()
{
    var client = new HttpClient();

    Task<string> getStringTask =
        client.GetStringAsync("https://docs.microsoft.com/dotnet");

    DoIndependentWork();

    string contents = await getStringTask;

    return contents.Length;
}

void DoIndependentWork()
{
    Console.WriteLine("Working...");
}

Enter fullscreen mode Exit fullscreen mode

Top comments (0)