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
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...");
}
Top comments (0)