Hola a todos:
Estoy intentando crear una aplicación con multihilos, por ejemplo, este código accede desde 2 hilos a los controles Label1 y Label2 respectivamente para cambiar su propiedad Text:
Imports System.Threading
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim HiloTarea1 As New Thread(AddressOf Me.Tarea1)
Dim HiloTarea2 As New Thread(AddressOf Me.Tarea2)
HiloTarea1.Start()
HiloTarea2.Start()
End Sub
Private Sub Tarea1()
Dim i As Integer
For i = 1 To 5000
Label1.Text = i.ToString
Application.DoEvents()
Next i
End Sub
Private Sub Tarea2()
Dim i As Integer
For i = 1 To 5000
Label2.Text = i.ToString
Application.DoEvents()
Next i
End Sub
End Class
Sin embargo en las funciones de los hilos, aparece un error System.InvalidOperationException que muestra el siguiente mensaje:
"Cross-thread operation not valid: Control 'Label2' accessed from a thread other than the thread it was created on."
...y cancela la ejecución. ¿Algo está mal en el código? ¿Existe una forma correcta para cambiar propiedades en los controles desde hilos?
Estoy utilizando la Beta 2 de Visual Basic 2005.
Gracias de antemano.
Saludos.
Gustavo Alegre
Leer las respuestas