terça-feira, 18 de março de 2008

Dica .NET e C# - Passando parametros para Thread em C#

Para passar parametros a uma Thread em C# é muito simples.
Basta usar a delagate ParametrizedThreadStart

Vamos seguir um passo a passo para fazer isso então.
1- Você precisa estar familiarizado com criação de threads em C#
para isso, no próprio blog a um outro post que explica como fazer.

2- O método criado que irá executar ao inicializar a thread não deve ter retorno(void) e deve receber como parâmetro apenas uma variável do tipo Object
Exemplo:
static void TrabalharComParametro(Object o){
//uma boa pratica é tratar o tipo de objeto recebido para saber se corresponde com o esperado

//teremos aqui a logica do metodo

}


3- Agora vamos usar nossa Thread parametrizada

//Vamos criar nossa delegate e passar como parametro o nome do metedo que queremos
// que seja executado quando a thread comece

ParametrizedThreadStart operacao = new ParametrizedThreadStart(TrabalharComParametro);

//Agora vamos passar a delegate como parametro para inicialização da thread no momento
// em que instaciamos a thread

Thread minhaThread = new Thread(operacao);

//Agora basta dar um start na thread passando como parametro o objeto e esperar o resultado

minhaThread.Start("String também é objeto, tudo é objeto");

Se nosso método que trabalha recebendo parâmetro tivesse o trabalho de imprimir na tela o que ele recebeu como parâmetro então o texto impresso seria:
String também é objeto, tudo é objeto

Espero que essa dica rápida ajude os navegantes.

3 comentários:

Anônimo disse...

Muuuuito obrigado,
a explicação foi simples e o exemplo perfeito para o que eu queria (aprender e criar um thread, isso em 20 minutos)

Anônimo disse...

Legal, até ai td bem, mais e se eu quiser passar mais de parametro, sem tranformar este único parametro em uma struct ?

há como ?

Anônimo disse...

Muito obrigado, me ajudou muito.

 
João Bosco Seixas