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

[0] Índice de Mensajes

Ir a la versión completa