Problemas con Thread.

22/08/2006 - 08:05 por LLUIS | Informe spam
Estoy intentando entender el funcionamiento de los hilo -Thread- mediante el
siguiente ejemplo extraído de un manual, y cada vez que lo ejecuto me da el
siguiente error: "Operación no válida a través de subprocesos: Se tuvo acceso
al control 'ListBox1' desde un subproceso distinto a aquel en que lo creó."

Imports System
Imports System.Threading
Public Class Form1

Private oHebra As Thread
Dim iContador As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
ListBox1.Items.Clear()
oHebra = New Thread(AddressOf LlenarLista)
oHebra.Start()
End Sub

Private Sub LlenarLista()
Try
Me.ListBox1.Items.Add("Id. Hebra: " &
oHebra.ManagedThreadId.ToString)
For iContador = 1 To 100000
Me.ListBox1.Items.Add("Contador: " & iContador)
Me.ListBox1.Refresh()
Thread.Sleep(500)
Next
oHebra.Abort()
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)

End Try
End Sub

End Class

¿Podría alguien ayudarme a solventar el problema?

Gracias.
 

Leer las respuestas

#1 LLUIS
22/08/2006 - 10:13 | Informe spam
Bien, encontré la solución en el sitio de "El Guille", tan solo estableciendo
la propiedad "Control.CheckForIllegalCrossThreadCalls = False", se evitan
todos los problemas que había expuesto anteriormente.

Un saludo a todos.

"LLUIS" escribió:

Estoy intentando entender el funcionamiento de los hilo -Thread- mediante el
siguiente ejemplo extraído de un manual, y cada vez que lo ejecuto me da el
siguiente error: "Operación no válida a través de subprocesos: Se tuvo acceso
al control 'ListBox1' desde un subproceso distinto a aquel en que lo creó."

Imports System
Imports System.Threading
Public Class Form1

Private oHebra As Thread
Dim iContador As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
ListBox1.Items.Clear()
oHebra = New Thread(AddressOf LlenarLista)
oHebra.Start()
End Sub

Private Sub LlenarLista()
Try
Me.ListBox1.Items.Add("Id. Hebra: " &
oHebra.ManagedThreadId.ToString)
For iContador = 1 To 100000
Me.ListBox1.Items.Add("Contador: " & iContador)
Me.ListBox1.Refresh()
Thread.Sleep(500)
Next
oHebra.Abort()
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)

End Try
End Sub

End Class

¿Podría alguien ayudarme a solventar el problema?

Gracias.



Preguntas similares