Lo que tenes que hacer es tirar la tarea en un nuevo Thread.
 
Va ejemplo, funciona ya lo probe:  
Código:
 Imports System.Threading
Public Class Form1
    Private demoThread As Thread
    Private a As Double
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Me.demoThread = New Thread(New ThreadStart(AddressOf Me.ThreadProcUnsafe))
        Me.demoThread.Start()
    End Sub
    Private Sub ThreadProcUnsafe()
        For i = 0 To 100000000
            a += 1
            ActualizarBoton(Me.Button1, a.ToString)
        Next
    End Sub
    Sub ActualizarBoton(btn As Button, text As String)
        If btn.InvokeRequired Then
            btn.Invoke(New Action(Of Button, [String])(AddressOf ActualizarBoton), New Object() {btn, text})
        Else
            btn.Text = text
        End If
    End Sub
End Class
  Espero te sirva. 
Sds.