CLR: .Net / Mono / Boo / Otros CLR > C#
Thread/Hilos y C#
(1/1)
yellowpaper:
Hola chic@s de SoloCodigo , les comento mi duda tonta pero realmente necesaria que me la evacuen.
Tengo un formulario con un label y quiero mostrar cada cierto tiempo el texto de ese label (que cambia en el tiempo desde un thread ) y se refleje en el form de manera correcta (como si se tratara de un contador o un progreso ).
Busque pero me enquilombo demasiado con la explicacion del delegate y demas y ademas cuando uso lo del delegate no me funciona correctamente.
Si me lo explicaran estaria muy agradecido. Desde ya muchas gracias.
yellowpaper:
Ejemplo simple que hace lo que pido:
--- Código: ---
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void MostarEtiqueta(string et);
private void button1_Click(object sender, EventArgs e)
{
Thread hilo = new Thread(cuenta);
hilo.Start();
}
private void etiqueta(string et)
{
label1.Text = et;
}
private void cuenta()
{
for (int i = 0; i < 70000; i++)
{
label1.Invoke(new MostarEtiqueta(etiqueta), new object[] { i.ToString() });
}
}
}
--- Fin del código ---
Suerte!
gabio2:
Prueba con esto.. saludos!
--- Código: C# --- public partial class Form1 : Form { public Form1() { InitializeComponent(); } private delegate void MostarEtiqueta(string et); MostarEtiqueta _mostrarEtiqueta = new MostarEtiqueta(etiqueta); private void button1_Click(object sender, EventArgs e) { Thread hilo = new Thread(cuenta); hilo.Start(); } private void etiqueta(string et) { if (label1.InvokeRequired) { label1.Invoke(new MostarEtiqueta(etiqueta), new object[] { et }); } else { label1.Text = et; } } private void cuenta() { for (int i = 0; i < 70000; i++) { _mostrarEtiqueta("Prueba " + i.ToString() ); } } }
Navegación
Ir a la versión completa