Foros del Web » Programación para mayores de 30 ;) » .NET »

C#: Multithreading

Estas en el tema de C#: Multithreading en el foro de .NET en Foros del Web. Saludos a todos, buenas tardes. Les planteo el problema: Tengo un form con dos cajas de texto (txtCounter1, txtCounter2) y dos botones (btnStartCounting1, btnStartCounting2) que ...
  #1 (permalink)  
Antiguo 27/09/2012, 11:41
Avatar de jlbautista  
Fecha de Ingreso: enero-2007
Ubicación: Durango, Méx.
Mensajes: 175
Antigüedad: 17 años, 11 meses
Puntos: 1
Información C#: Multithreading

Saludos a todos, buenas tardes.

Les planteo el problema:
Tengo un form con dos cajas de texto (txtCounter1, txtCounter2) y dos botones (btnStartCounting1, btnStartCounting2) que al darle clic van a lanzar un conteo progresivo, cada uno en su respectivo TextBox, desde 0 hasta un cierto límite.

He leído que con las herramientas de los WinForms no se puede hacer por default, sino usando multihilos.

Si alguno tiene un buen recurso en línea ó tiene algún proyecto de ejemplo que pueda ayudarme a comprender el funcionamiento de los hilos de ejecución, le agradecería.

Última edición por jlbautista; 27/09/2012 a las 11:56
  #2 (permalink)  
Antiguo 27/09/2012, 12:04
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 6 meses
Puntos: 220
Respuesta: C#: Multithreading

En un tema de esto foro puse como puedes crear thread


Cita:
Iniciado por Dradi7 Ver Mensaje
Ejemplo como debes implementarlo

Código vb:
Ver original
  1. Dim Ts As ThreadStart
  2. Dim T As Thread
  3.  
  4. Delegate Sub cambiarColor(ByVal c As Color)
  5. Dim cc As cambiarColor
  6.  
  7. Private Sub Procesar()
  8.     Ts = New ThreadStart(AddressOf Aplicar_Filtro)
  9.     T = New Thread(Ts)
  10.     T.Start()
  11. End Sub
  12.  
  13. ' OJO CUANDO ESTES USANDO PROCESOS EN SEGUNDO PLANO Y QUIERE MANEJAR(REALIZAR CAMBIOS) OBJETOS QUE SE ENCUENTREN EN PRIMER PLANO DEBES USAR DELEGADOS
  14. Private Sub Aplicar_Filtro()
  15.     ' MOSTRAMOS MENSAJE ESTE MENSAJE NO NECESITA DELEGADO PORQUE NO DEPENDE DE PROCESOS EN PRIMER PLANO
  16.     msgbox("Mostrando Mensaje")
  17.     ' EN CAMBIO SI HAGO ESTO
  18.     txtAviso.Text = "Filtrando" ' ME DARA ERROR PORQUE ESTOY TRATANDO DE CAMBIAR ALGO QUE ESTA EN PRIMER PLANO, ENTONCES ACA USO LOS DELEGADOS
  19.    
  20.     ' USANDO DELEGADOS
  21.     bb = New cambiarColor(AddressOf cambiarColorBackground)
  22.     If txtAviso.InvokeRequired Then txtAviso.Invoke(bb, Color.Red)
  23. End Sub
  24.  
  25. private sub cambiarColorBackground(ByVal c As Color)
  26.     txtAviso.Color = c
  27. end sub

Este es un ejemplo basico de como vas a utilzarlo por cada control que vas a realizar cambios entonces debes usar delegados
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 27/09/2012, 12:05
Avatar de Alexis_Mejias  
Fecha de Ingreso: enero-2005
Ubicación: Santiago
Mensajes: 77
Antigüedad: 19 años, 11 meses
Puntos: 17
Respuesta: C#: Multithreading

Usa el Timer....

los Timers son super utiles para lo que quieres... Saludos....

http://msdn.microsoft.com/en-us/libr...(v=vs.71).aspx
__________________
Alexis Mejias C.
Freelancer Chile - Si te sirvió puntúa positivo
Blog Personal

Etiquetas: c#, threading, threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:02.