SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: yellowpaper en Miércoles 16 de Enero de 2013, 21:11

Título: Thread/Hilos y C#
Publicado por: yellowpaper en Miércoles 16 de Enero de 2013, 21:11
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.
Título: Re:Thread/Hilos y C#
Publicado por: yellowpaper en Jueves 17 de Enero de 2013, 14:23
Ejemplo simple que hace lo que pido:

Código: [Seleccionar]

    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() });
            }
        }

   
    }

Suerte!
Título: Re:Thread/Hilos y C#
Publicado por: gabio2 en Martes 22 de Enero de 2013, 18:17
Prueba con esto.. saludos!


Código: C#
  1.     public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.         }
  7.  
  8.         private delegate void MostarEtiqueta(string et);
  9.         MostarEtiqueta _mostrarEtiqueta  = new MostarEtiqueta(etiqueta);
  10.         private void button1_Click(object sender, EventArgs e)
  11.         {
  12.             Thread hilo = new Thread(cuenta);
  13.             hilo.Start();
  14.         }
  15.  
  16.         private void etiqueta(string et)
  17.         {
  18.           if (label1.InvokeRequired)
  19.             {
  20.                label1.Invoke(new MostarEtiqueta(etiqueta), new object[] { et });
  21.              }
  22.            else
  23.             {
  24.             label1.Text = et;
  25.              }
  26.         }
  27.  
  28.         private void cuenta()
  29.         {
  30.             for (int i = 0; i < 70000; i++)
  31.             {
  32.                 _mostrarEtiqueta("Prueba " + i.ToString() );
  33.             }
  34.         }
  35.  
  36.    
  37.     }
  38.