Array
(
)

Threads enviar dados

Fábio Petry
   - 30 ago 2011

Bom dia,
Estou iniciando no forum e na parte de C#. Estou tentando montar uma execução de duas threads que possam controlar um mesmo recurso ao mesmo tempo, em outras palavras, montei um form com dois campos de textbox e acionei as Threads. Quando a primeira thread acessa os textbox's ela coloca um dado EX: 1 e quando a segunda thead acessa os textbox's ela coloca outro valor Ex. 0.
Infelizmente apesar dos acessos serem em momentos diferentes mas sequencial (um acessa e depois o outro) estou com problemas para conseguir realizar o processo. Os problemas variam desde erro de acesso de objeto não criado na thead a não mostrar o valor. Bom abaixo segue o código, se alguem puder dar uma ajuda, ja estou a alguns dias em cima deste contexto. 

Obrigado.

Ricardosilva
   - 08 set 2011

Olá Fabio,
Está certo uma thread não pode acessar diretamente um Objeto a qual ela não enxergue, para isso você deverá utilizar os 'Delegates' ou então pode usar o 'MethodInvoker'.
1. if(textBox1.InvokeRequired) {2. textBox1.BeginInvoke((MethodInvoker)delegate {3.        textBox1.Text = "0";4.     });5. }
a Linha um verifica se a thread tem permissão de acessar o objeto textBox1;a lionha 2 cria um delegate invocado pelo objeto textBox1;a linha 3 muda o texto do objeto textBox1 de forma paralela a thread;
PS ao trabalhar com mais de uma Thread sugiro que leia sobre 'Semáfaro', 'Lock', etc

0
|
0