vi tanto temas tuyos de thread, que te hice este ejemplo simple, para que veas que facil es hacer un thread, de un proceso largo que te traba toda la UI.
Imports System.Threading
Public Class Form1
Private Delegate Sub Progreso()
Private vHilo As Thread
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = 0
vHilo = New Thread(New ThreadStart(AddressOf Proceso))
vHilo.Start()
End Sub
Private Sub Proceso()
If Me.InvokeRequired Then
Me.Invoke(New Progreso(AddressOf Proceso))
Else
Do While True
TextBox1.Text += CInt(1)
Application.DoEvents()
Loop
End If
End Sub
End Class
lo que hace es simplemente sumar un valor en el textbox en un bucle infinito, que sin esto se te trabaria toda la pantalla y no podrias tocar nada, y como usa el control textbox hay que usar un delgado, de lo contrario te sale el famoso error "
Operación no válida a través de subprocesos: Se tuvo acceso al control 'TextBox1' desde un subproceso distinto a aquel en que lo creó.", ese error quiere decir que no podes manipular un control del formulario, ya que este esta en un hilo diferente (el hilo de la UI), que es diferente al hilo que creas vos ahi.
con esa forma podes hacer lo que se te cante.
saludos.