Here is a simple example

Code:
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Button1.Enabled = False
        thrd = New Threading.Thread(AddressOf foo)
        thrd.IsBackground = True
        thrd.Start()
    End Sub

    Dim thrd As Threading.Thread

    Private Sub foo() 'background thread
        For x As Integer = 1 To 10
            Dim del As New UpdTBdel(AddressOf UpdTB)
            Me.Invoke(del, x) 'update UI
            Threading.Thread.Sleep(250)
        Next
    End Sub

    Delegate Sub UpdTBdel(someNumber As Object)

    Private Sub UpdTB(someNumber As Object)
        TextBox1.Text = DirectCast(someNumber, Integer).ToString
    End Sub