none
for e hilos RRS feed

  • Pregunta

  • que tal, mi pregunta es como puedo hacer para que dentro de un for colocar un hilo(thread) para ejecutar otra rutina y que los dos proceso tanto del for como del hilo se vean paralelos

    ejemplo tengo este código:

    Protected Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click Dim t2 As New ThreadStart(AddressOf ejemplo2) Dim t1 As Thread For i = 1 To 3 t1 = New Thread(t2) TextBox1.Text = TextBox1.Text + i.ToString UpdatePanel1.Update() t1.Start()

    Thread.sleep(2000) Next End Sub Public Sub ejemplo2() TextBox1.Text = TextBox1.Text + "Hilo" End Sub

    lo que quiero es que en la pagina web se muestre cada 2 segundos un dato, es decir en el for agrego el valor de "i" al textbox, enseguida la palabra "Hilo", después el siguiente valor de "i" que seria un "2" y así sucesivamente de tal forma que al final me quedara el textbox así: "1Hilo2Hilo3Hilo", cabe mencionar que ese resultado si lo obtengo bien pero me sale todo junto al final del evento click del botón, y lo que quisiera es que se mostrara primero el "1Hilo" en el textbox, después de 2 segundos "2Hilo" y al pasar otros 2 segundos "3Hilo", conservando los anteriores valores del textbox ("1Hilo2Hilo3Hilo")

    de antemano gracias

    saludos

    jueves, 25 de octubre de 2012 17:26

Todas las respuestas

  • Un hilo no puede acceder elementos de interfase gráfica como una casilla de texto de forma directa.  Estudie acerca de los métodos Invoke() y BeginInvoke().  Nótese además que crea un hilo nuevo al inicio que nunca usa, que es un desperdicio de recursos del sistema (la t2).  No hace falta tener un objeto Thread para crear otro.

    Jose R. MCP
    Code Samples

    jueves, 25 de octubre de 2012 19:52
  • muchas gracias por sus comentarios, acerca de "t2", este hilo representa el método que se ejecuta en un objeto system.threading.thread, ya que se necesita ThreadStart para indicar el método, y el hilo t1 inicializa una nueva instancia de la clase system.threading.thread, en otras palabras pasa un objeto al subproceso que se va a iniciar, es por eso que son necesarios tanto t1 como t2.

    revisare los metodos invoke

    gracias

    saludos

    viernes, 26 de octubre de 2012 15:49
  • Ah ok.  Sí, leí mal y creí que ambos eran tipo Thread.  No programo VB.net así que seguramente por ahí viene mi confusión.

    Jose R. MCP
    Code Samples

    viernes, 26 de octubre de 2012 17:13