Article image
Guilherme Lossio
Guilherme Lossio22/02/2024 02:30
Compartilhe

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.

image

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:

image

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:

image

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.

image

Nesse exemplo temos uma execução paralela, para executar alguma tarefa enquanto mantém a Thread principal livre.

image

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/

Compartilhe
Comentários (0)