[DICA — C#/Série Certificação] — Manage Program Flow — Parte 2

Cleiton Felipe
3 min readAug 9, 2018

Fala galera,

Como falei no post anterior recentemente voltei aos estudos para obter as certificações Microsoft, que você pode conferir quais estão disponíveis para realização neste link.
Então resolvi começar a registrar meus códigos de exemplo no GitHub, e para não ficar escrevendo textos gigantescos nos comentários resolvi incluir na série “Dicas de C#” que já venho disponibilizando algumas coisas aqui no blog.

Obs.: Todos os fontes terão um comentário do que a classe e métodos estão realizando em tempo de execução.

Neste segundo post vamos colocar mais a mão no código para ver como é o funcionamento das Threads em uma aplicação.

Caso esteja chegando agora, aqui está o link para acessar o primeiro post deste assunto.

Feita as devidas considerações bora lá!!

Bom no post anterior entendemos na teoria o que são e as necessidades de “usar” Threads, mas devemos usar Threads sempre?
A primeira pergunta: É realmente uma boa usar Threads em nossas aplicações?
Na verdade precisamos avaliar muito bem e usar em extrema necessidade pois as Threads podem nos ajudar em alguns pontos mas ela nos traz problemas de consumo de memória entre outros que podemos ter. Não vou citar possíveis problemas neste post mas talvez venha fazer um post especifico sobre isso no futuro.
Porém mesmo com este ponto negativo você pretende utiliza-la, então saiba que temos como ter controle sobre elas e é isso que pretendo mostrar neste post.

Vamos para o primeiro exemplo que os guias de certificação nos mostra.

Trabalhando com Threads

Neste primeiro exemplo vamos criar um método que irá rodar em outra Thread e a nossa aplicação vai sincronizar o uso de saída em tela para ter uma aplicação “multi-thread”.
Este mecanismo de sincronia não irá deixar as duas threads escreverem na tela juntas e isso vai fazer uma escrever após a outra, porem a percepção que teremos será de uma aplicação executando duas tarefas ao mesmo tempo, no entanto ambas estarão rodando em threads distintas.
Vamos ver o código:

Como isso acontece?
Isso é possível com o método Thread.Join() este método chama uma thread e a deixa esperando até que a outra thread finalizar o processo que está executando.
Por que temos o Thread.Sleep(0)? Isso é usado para passar para o SO que a Thread foi finalizada.

Tente testar com outras ações para entender melhor o funcionamento deste mecanismo.

Background e Foreground

Agora vamos para um outro conceito bem importante que é a execução da thread em background ou foreground.

O que significa uma thread em background ou em foreground?

Threads em background são executadas e já finalizadas pelo sistema operacional.

Threads em foreground podem ser usadas para manter uma aplicação viva ou no popular “em pé” :). Somente quando todas as threads foregrounds são encerradas que a CLR (Common Language Runtime)“desliga/encerra” a aplicação que estava sendo mantida ativa. É muito importante entender este funcionamento para não ocorrer problemas de execução de suas aplicações.

Abaixo veja um código utilizando a configuração de Background em uma thread:

Note que desta maneira a aplicação vai ser executada e encerrada imediatamente. Se você mudar a propriedade IsBackground para false, você esta criando uma thread em foreground e assim a aplicação vai “printar” na tela a mensagem do Console.Writeline as 10 vezes que esta na rotina da aplicação.

Como falei é muito importante entender como funciona este conceito de background e foreground para colocar em suas aplicações caso haja necessidade de utilizar as Threads.

Bom para este post é isso, espero que tenha ajudado a entender melhor estas questões da classe Thread, no próximo post volto a falar mais um pouco de Threads com mais algumas funcionalidades desta classe.

News

Nesta news trago algumas dicas de blog para leitura que são ótimos para aprendizado neste nosso mundo de desenvolvimento:

Blog do Renato Groffe: https://medium.com/@renato.groffe

Blog do Rafael Almeida: http://ralms.net/

Blog da Gláucia Lemos: https://code4coders.wordpress.com/

Blog Do Ray Carneiro: https://medium.com/@rcarneironet

Sempre acompanho estes blogs e outros mais, nos próximos post estarei trazendo mais dicas como estas e também de livros e muito mais.

Até o próximo post galera.

Abraços!

Referências: https://www.amazon.com.br/Exam-Ref-70-483-Programming-MCSD/dp/0735676828

--

--

Cleiton Felipe

Pai do Pedro, casado com Janna Granado, Software Developer, Co-founder/Community Manager da SoroCódigos, adoro desenvolver soluções