2
respostas

[Dúvida] Utilização do Await na Requisição

Olá,

Foi utilizado o operador await para poder bloquear o fluxo do código enquanto a requisição ainda estava em andamento, neste caso poderia usar o método Result do ao invés do await?

Exemplo:

using (HttpClient client = new HttpClient())
{
    string response = client.GetStringAsync("https://guilhermeonrails.github.io/api-csharp-songs/songs.json").Result;
}

Agradeço desde já!

2 respostas

Olá Carlos!

Ótima pergunta! O operador await é usado para aguardar a conclusão de uma operação assíncrona antes de continuar a execução do código. No exemplo que você mostrou, o await é utilizado para aguardar a conclusão da requisição HTTP antes de prosseguir com a execução do código.

No entanto, é importante ter cuidado ao utilizar o método Result em uma operação assíncrona, como no exemplo que você mostrou. O uso do Result bloqueia a execução do código até que a operação seja concluída, o que pode levar a problemas de desempenho e até mesmo a bloqueios no aplicativo.

Uma alternativa mais recomendada é utilizar o operador await juntamente com o método GetStringAsync de forma assíncrona, como no exemplo a seguir:

using (HttpClient client = new HttpClient())
{
    string response = await client.GetStringAsync("https://guilhermeonrails.github.io/api-csharp-songs/songs.json");
}

Dessa forma, o código irá aguardar a conclusão da requisição de forma assíncrona, sem bloquear o fluxo do programa. Isso permite que outras operações possam ser executadas enquanto a requisição está em andamento, melhorando a responsividade do aplicativo.

Espero ter ajudado e bons estudos!

Obrigado pela resposta, mas qual seria a diferença entre o bloqueio do .Response e o aguardar do Await?