Task.Run() em C#: O Segredo para Operações Paralelas Com Eficiecia
- #C#
- #.NET C#
Bem vindo, Dev.
Meu nome é Guilherme Lossio, e hoje eu gostaria de falar um pouco sobre operações assincronas, e como funciona as Threads.
Ok, após eu citar esse monstro de cinco cabeças que são as thread é importante entendermos o que é uma Thread, e como a utilização delas podem melhorar o funcionamento de nossos codigos.
Task.Run()
O Task.Run() é um método que possibilita a utilização delas, de maneira separada da Thread inicial. Elas são como linhas de pensamento, que funcionam simultaneamente.
No processamento de dados temos dois tipos de processamento. O processamentos Síncrono e os Assíncronos.
A principal diferença entre eles é como lidam com as operações.
Mas então, qual a diferença entre elas?
Processamento Síncrono: As operações são executadas sequencialmente, o que significa que o programa aguarda o término de uma operação antes de iniciar a proxima.
Processamento Assíncrono: Nesse caso as operações ocorrem em formado de varias threads de controle adicional, permitindo que assim o programa execute várias operações ao mesmo tempo, sem bloquear o fluxo principal do codigo.
Como utilizar:
Para utiliza-lo primeiramente é importante importarmos as bibliotecas, que são a System.Threading.
Após isso iremos iniciar com o seguinte exemplo:
Nesse exemplo temos uma função princiapl chamada Main, que será executada ao programa iniciar.
Nele é possivel ver que o sistema utiliza o Task.Run() no RealizarCalculoDemorado(). O operador await suspende a avaliação do método async delimitador enquanto essa operação assíncrona não é concluida. Isso significa que o mesmo irá esperar essas Tasks ai localizadas terminarem para concluir o código, porém caso o mesmo não existisse o codigo executaria instantaneamente o comando de WriteLine(ProgramaConcluído.)
Estudo de caso:
Nesse exemplo temos uma operação demorada Assíncrona que pode ser utilizada para coisas como enviar e-mail para certos contatos, fazer cahamdos para APIS, requisições e afins. Nesse modelo ocorre uma execução sequencial das tarefas, só concluindo quando todas forem concluidas.
Nesse exemplo temos uma execução paralela, para executar alguma tarefa enquanto mantém a Thread principal livre.
Nesse modelo temos um exemplo de execução simultanea, onde o codigo só será finalizado após as duas Task serem concluidas. Isso é representado no await Taks.WhenAll, que vai retornar um valor positivo apenas quando ambas forem concluidas.
Conclusão
Após o final desse artigo chegamos na conclusão da importancia da utilização dessas threads para que assim possamos optimizar a execussão de nosso software.
Fontes:
learn.microsoft.com/