Como passar uma variavel de dentro de uma Thread para um TextBox

Sempre que eu precisava falar com algum text box fora de uma Thread eu usava uma variavel global para isso. Mas depois de googlear com calma descobri que tem como fazer isso com mais.... Classe...  Wink

Inclua

using System.Threading;

No evento de Click de botao coloque o seguinte codigo:

Thread t = new Thread(new ThreadStart(SayHiThread));
t.IsBackground = true;
t.Start();

Coloque esse codigo dentro do Form

private void SayHiThread()
{
 Invoke(new SayHiDelegate(SayHi), new object [] { "Hello from the thread" });
}
private void SayHi(string msg)
{
 myTextbox.Text = msg;
}

Fora do classe do Form coloque

public delegate void SayHiDelegate(string msg); 

Tambem eh possivel tambem passar mais de uma variavel para o delegate, por exemplo

public delegate void Escreve(string Texto, Color Cor);
private void Escreve_Texto(string Texto, Color Cor)
{
 myRichTextBox.text = Texto;
 myRichTextBox.Color = Cor;
}

Dentro da Thread

Invoke(new Escreve(Escreve_Texto), new object[] { "Oi da thread.", Color.Red });
 

Artigo original de: James T. Johnson

Postado em s 2/8/2007 14:43:00 by Gh0stman

Permalink | Comments (0) | Post RSSRSS comment feed |

Categorias: C# | Dicas

Tags: ,

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Related posts

Add comment


(Will show your Gravatar icon)  

  Country flag





Live preview

janeiro 6. 2009 04:48