ya me contesto yo solo pues ya me funciona y perfectamente como queria, mushisimas gracias. La solución o mejor dicho la manera de integrarlo en eun codigo parecido al mio es.
 
crear un private sub nuevo por ej.:  
Código:
     Private Sub BakcWork()
        If Not Me.BackgroundWorker1.IsBusy Then
            With BackgroundWorker1
                .WorkerSupportsCancellation = True
                .RunWorkerAsync()
            End With
        End If
    End Sub
  y en el boton_click llamas a ese sub y en el evento dowork del backgroundWorker1 llamas al private sub donde esta el codigo que quieres ejecutar en segundo plano (para qu eno se bloquee la ventana principal y reporte los cambios) 
por ej.:  
Código:
     Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        
RecorreGrid()
    End Sub
  Gracias, y espero le sirva a alguien mas mi problemilla