• Domingo 22 de Diciembre de 2024, 07:52

Autor Tema:  Thread/Hilos y C#  (Leído 2317 veces)

yellowpaper

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Thread/Hilos y C#
« en: Miércoles 16 de Enero de 2013, 21:11 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re:Thread/Hilos y C#
« Respuesta #1 en: Jueves 17 de Enero de 2013, 14:23 »
0
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!

gabio2

  • Miembro MUY activo
  • ***
  • Mensajes: 402
  • Nacionalidad: mx
    • Ver Perfil
Re:Thread/Hilos y C#
« Respuesta #2 en: Martes 22 de Enero de 2013, 18:17 »
0
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.  
« última modificación: Martes 22 de Enero de 2013, 19:27 por gabio2 »
@gabio87