Problemas con Listboxs en Threads
Publicado por Milán (4 intervenciones) el 25/03/2011 05:14:12
Estoy haciendo un programa para la escuela con Hilos (Threads) para meter datos randomizados en 3 listbox donde cada listbox es un Thread y esos numeros random quiero que los muestre en el listbox y si es 0 que mande un mensaje diciendo que salió cero y después el programa se cierre, pero el problema no es ese sino que no muestra datos en los listbox, probé haciendo un for en el button1_Click y llenando la lista desde ahí y si funciona pero al querer llenarla desde el Thread no lo hace, espero que puedan ayudarme por que es para mañana y creanme... llevo horas intentando pero no doy, Gracias.
Aquí dejo el código
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
Random r2 = new Random();
BackgroundTest Test = new BackgroundTest();
BackgroundTest canada = new BackgroundTest();
Thread hilo1 = new Thread(new ThreadStart(canada.Canada));
BackgroundTest mexico = new BackgroundTest();
Thread hilo2 = new Thread(new ThreadStart(mexico.Mexico));
BackgroundTest japon = new BackgroundTest();
Thread hilo3 = new Thread(new ThreadStart(japon.Japon));
hilo1.Start();
hilo2.Start();
hilo3.Start();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
class BackgroundTest : Form1
{
public void Canada()
{
Random r2 = new Random();
for (int h = 0; h < 2000; h++)
{
int r3 = r2.Next(100);
if (r3 == 0)
{
MessageBox.Show("Temperatura 0 en Canada");
this.Close();
}
string r4 = Convert.ToString(r3);
Convert.ToString(r3);
listBox1.Items.Add(r4);
Thread.Sleep(400);
listBox1.Refresh();
}
}
public void Mexico()
{
Random random = new Random();
for (int i = 0; i < 2000; i++)
{
int w = random.Next(100);
if (w == 0)
{
MessageBox.Show("Temperatura 0 en Mexico");
this.Close();
}
string a = Convert.ToString(w);
//MessageBox.Show("Mexico Vale: " + a);
Thread.Sleep(400);
listBox2.Refresh();
}
}
public void Japon()
{
Random random = new Random();
for (int i = 0; i < 2000; i++)
{
listBox3.Refresh();
int r = random.Next(500);
if (r == 0)
{
listBox3.Refresh();
MessageBox.Show("Temperatura 0 en Japon");
this.Close();
}
string c = Convert.ToString(r);
Thread.Sleep(600);
listBox3.Refresh();
}
}
}
}
Aquí dejo el código
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
Random r2 = new Random();
BackgroundTest Test = new BackgroundTest();
BackgroundTest canada = new BackgroundTest();
Thread hilo1 = new Thread(new ThreadStart(canada.Canada));
BackgroundTest mexico = new BackgroundTest();
Thread hilo2 = new Thread(new ThreadStart(mexico.Mexico));
BackgroundTest japon = new BackgroundTest();
Thread hilo3 = new Thread(new ThreadStart(japon.Japon));
hilo1.Start();
hilo2.Start();
hilo3.Start();
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
class BackgroundTest : Form1
{
public void Canada()
{
Random r2 = new Random();
for (int h = 0; h < 2000; h++)
{
int r3 = r2.Next(100);
if (r3 == 0)
{
MessageBox.Show("Temperatura 0 en Canada");
this.Close();
}
string r4 = Convert.ToString(r3);
Convert.ToString(r3);
listBox1.Items.Add(r4);
Thread.Sleep(400);
listBox1.Refresh();
}
}
public void Mexico()
{
Random random = new Random();
for (int i = 0; i < 2000; i++)
{
int w = random.Next(100);
if (w == 0)
{
MessageBox.Show("Temperatura 0 en Mexico");
this.Close();
}
string a = Convert.ToString(w);
//MessageBox.Show("Mexico Vale: " + a);
Thread.Sleep(400);
listBox2.Refresh();
}
}
public void Japon()
{
Random random = new Random();
for (int i = 0; i < 2000; i++)
{
listBox3.Refresh();
int r = random.Next(500);
if (r == 0)
{
listBox3.Refresh();
MessageBox.Show("Temperatura 0 en Japon");
this.Close();
}
string c = Convert.ToString(r);
Thread.Sleep(600);
listBox3.Refresh();
}
}
}
}
Valora esta pregunta


0