Public Class Form1 'Se agrego un delegado que sera el que se encarge de la llamada asincrona 'que agrege el item a la lista Delegate Sub AddItemCallBack(ByVal Item As Integer) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim obj_multi As New Thread(AddressOf llenar) obj_multi.Start() End Sub Private Sub llenar() Dim cont As Integer For cont = 0 To 100 'En lugar de llamar directamente al ListBox vamos a ejecutar 'un metodo de la clase llamado AddItemToLista Me.AddItemToList(cont) 'ListBox1.Items.Add(cont) Next End Sub 'Este metodo demuestra un patron para realizar llamadas seguras a hilos 'en un control Windows Forms. 'Si el hilo que hace la llamada es diferente que el hilo que creo el contol 'ListBox, entonces el metodo crea un AddItemCallBack y lo manda llamar desde 'el mismo de manera asyncrona utilizando en metodo invoke. 'Si el hilo es el mismo que el que creo el control ListBox, entonces el Item ' es agregado directamente Public Sub AddItemToList(ByVal Item As Integer) If Me.ListBox1.InvokeRequired Then Dim d As New AddItemCallBack(AddressOf AddItemToList) Me.Invoke(d, New Object() {Item}) Else ListBox1.Items.Add(Item) End If End Sub End Class