Programando threads em C# -
PorFernando Ottoboni em	21/01/2011
Todo programa desenvolvido em C# possui uma thread. Esta é conhecida como thread principal. Muitos programas geralmente precisam realizar tarefas que levam um longo tempo. Se a thread principal do aplicativo for dedicada a isto, o aplicativo pode parar de responder até que a execução esteja concluída.
Existem várias formas de programarmos execução em segundo plano nos softwares que desenvolvemos. Uma delas é criar um método dentro da classe exclusivo para execução da tarefa em segundo plano e outro responsável pela chamada desta tarefa, como é demonstrado no código a seguir.
Passando parâmetros para a Thread – parte 01
Em algumas situações é necessário passar informações para a thread para serem usadas durante o processamento. Essa passagem de dados pode ser feita de várias maneiras. Uma delas é criar um construtor na classe que executa a thread permitindo um ou mais parâmetros. Ao criar a instância da classe, use este construtor e passe os parâmetros desejados.
Por exemplo, podemos executar logs de erros em threads em background. Mas para que o log seja armazenado em algum repositório, é necessário informar para a thread algumas informações como o erro ocorrido, onde ele ocorreu, etc. Usando o mesmo conceito do exemplo anterior, podemos colocar no construtor da classe 'GerenciaThread' os parâmetros necessários para gravação do log, como o código abaixo demonstra.
Console.WriteLine(\"Esta é a Thread Principal\");
\"ThreadPassingData\",
\"Program\", \"Main\");
Passando parâmetros para a Thread – parte 02
Usar Threads é sempre vantajoso no ponto de vista de que podemos aproveitar o poder de processamento dos processadores que possuem mais de um núcleo, pois podemos programar para que cada thread tenha o seu processamento realizado por núcleos diferentes. Mas é sempre importante avaliar corretamente a utilização de threads, pois a concorrência poderá causar deadlocks e funcionamento incorreto de um procedimento.
http://www.4shared.com/file/uV0W2TVy/Thread.html
http://www.4shared.com/file/x45-wmua/Thread2.html
Oneide Schneider disse:
Legal.. simples e objetivo :D
Desculpa cara mas, no segundo código tem ali:
o método "ExecutarLogErro" com paramêtro object, ok?
Mas daí, você tá mandando isso:
"GerenciaLogErro gle = new GerenciaLogErro();
Thread t = new Thread(gle.ExecutarLogErro);"
Porque? Se o metodo ta na mesma classe? Desculpa, não entendi.
Se eu tentar mandar o metodo ExecutarLogErro ele sempre vai pedir o object de parametro… Me confudi full!