Ti ringrazio della risposta.

Se posso continuare in questo post, metto quello che ho fatto

preparo una classe private da inviare al thread
codice:
'classe privata da passare al thread
Private Class ThreadData
 'valori di input
 Public DirectoryIniziale As String
 'valori di output
 Public DirectoryCorrente As String
End Class
una variabile private
Private t As Thread = Nothing

in modo da bloccare il thread da pulsante
codice:
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
 If t IsNot Nothing Then t.Abort()
End Sub
il lancio del thread
codice:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
 Me.Button2.Focus()
 Me.Button1.Enabled = False
 Dim data As New ThreadData() With {.DirectoryIniziale = "c:\"}
 t = New Thread(AddressOf RunThread)
 t.Start(data)
 Do While Not t.Join(1)
  Me.Label1.Text = data.DirectoryCorrente
  Application.DoEvents()
 Loop
 Me.Button1.Enabled = True
End Sub

vado bene?