Olá, Matheus, tudo bem?
Desde já peço desculpas pela demora em obter retorno.
Quando você usa .GetAwaiter().GetResult()
em um método síncrono para chamar um método assíncrono, você está efetivamente bloqueando a thread atual até que o método assíncrono seja concluído. Isso significa que a execução será suspensa até que o método assíncrono retorne o resultado ou lance uma exceção.
No entanto, é importante ter cuidado ao utilizar essa abordagem, pois quando você bloqueia a thread usando .GetAwaiter().GetResult()
, você está essencialmente tornando o código síncrono, perdendo a capacidade de aproveitar os recursos de processamento paralelo.
Uma alternativa mais recomendada é utilizar o async/await
diretamente no método síncrono, transformando-o em um método assíncrono. Dessa forma, você pode aproveitar os benefícios do paralelismo, permitindo que outras tarefas sejam executadas enquanto aguarda a conclusão do método assíncrono.
Todavia, vale ressaltar que como você postou sua pergunta há algum tempo é possível que a constante evolução da tecnologia impacte na resolução da sua dúvida. Sendo assim, caso queira se aprofundar neste tema e com conteúdos atualizados, recomendo a documentação abaixo:
Ela está em inglês, mas você pode usar o recurso de tradução automática do navegador.
Espero ter ajudado.
Abraços e bons estudos!