Executando verificação de segurança...
6

[Dica] Agrupamento de operações assíncronas em C#

Olá a todos, infelizmente eu ando muito na correria e acabo não conseguindo postar muitos conteúdos aqui, mas pelo menos consigo ler e prestigiar alguns. Inclusive alguns projetos pessoais meus encontram-se pausados devido (principalmente o RodyDB) o trabalho.

Mas bom, vamos lá a pequena dica de hoje que é algo simples mas que faz bastante diferença no quesito desempenho: o agrupamento de chamadas assíncronas. Lembrando que a linguagem de programação que irá ser demonstrada o exemplo é C#.

Exemplo 1 - Chamadas consecutivas de métodos assíncronos

public async Task CallApis()
{
	await FirstApi();
	await SecondApi();
	await ThirdApi();
}

Nesse exemplo, aguardaremos várias chamadas. Portanto, o método inteiro será executado na soma de vezes que cada chamada assíncrona leva para ser concluída.

Exemplo 2 - Agrupamento das chamadas

public async Task CallApis()
{
	await Task.WhenAll(
		FirstApi(),
		SecondApi(),
		ThirdApi()
	);
}

Nesse exemplo, colocamos a dica em prática. As chamadas serão executadas em "paralelo" e será concluído quando a chamada assíncrona mais lenta terminar.

Observações importantes:

  • Aguardar a conclusão da chamada mais lenta é mais rápido do que esperar que todas as chamadas sejam concluídas uma a uma.
  • Você não pode usar essa abordagem se precisar do resultado de uma operação assíncrona para executar a próxima.

Então é isso pessoal, espero que tenham gostado e qualquer coisa só comentar =)
Abraços!

Foi feito o uso de pseudocódigos para exemplificar melhor, caso queira ver melhor do uso dessa função WhenAll recomendo consultar a fonte.

Carregando publicação patrocinada...