terça-feira, 22 de dezembro de 2015

Implementação de Thread e Multithreadding C# Parte 1

Imagine se seu computador tenha apenas uma unidade central de processamento (CPU) e é capaz de executar apenas uma tarefa por vez. Agora imagine se nesse cenário a cpu tivesse que executar uma tarefa de longa duração.
Embora essa operação esteja sendo executadas, todas outras operações estaria em estado de pausa. As coisa ficam piores se essa tarefa de longa duração conter um erro e nunca terminar, a máquina ficaria travada, o resto das operações ficariam inutilizadas e a solução seria reiniciar a máquina.
Para solucionar esse problema, foi criado o conceito de Thread. Nas versões atuais do Windows , cada aplicativo é executado em seu próprio processo e isola uma aplicação da outra e garantindo os demais processos não sejam afetados por possível em um outro processo.

Utilizando a classe Thread

A classe thread é encontrada no namespace System.Threading
Permite que você crie novas Theads, gerencie prioridade e obtenha seu status.
A classe thread não é algo que você deva usar em sua aplicação a não ser tenha necessidades especiais, entretanto ao usar a classe thread você tem controle a todas as opções de configuração.

Abaixo um exemplo de como utilizar a classe threading, faremos um exemplo fazendo com que o thread principal seja executado no primeiro laço espere o método “Método Thread” ser finalizado e continue a execução.


Resultado:
 
Veja que não ocorreu o comportamento que esperávamos, para que ocorra, devemos inserir o método “Join()”

Definição segundo o MSDN
“O método Join() serve para bloquear o segmento de chamada até que um segmento termina, para continuar a executar COM padrão e o bombeamento de SendMessage.”

 

Resultado:

Podemos também utilizar o método Thread.Sleep() para determinar o tempo de espera para o retorno da thread principal após a outra ser finalizada.


Resultado:

Referências: https://msdn.microsoft.com/pt-br/library/95hbf2ta(v=vs.110).aspx


Nenhum comentário:

Postar um comentário