gracias por el consejo, estoy buscando informacion al respecto y no logro integrar el BackgroundWorker1 en mi aplicación, podrias, segun el codigo que envie antes, en que parte deberia poner este codigo que encontre:
  
Código:
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        BackgroundWorker1.RunWorkerAsync()
        If BackgroundWorker1.CancellationPending Then
            Exit Sub
        End If
    End Sub
    Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim i As Integer = 0
        For i = 0 To 100
            BackgroundWorker1.ReportProgress(i)
        Next
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        BackgroundWorker1.CancelAsync()
        Label1.Text = "Proceso cancelado"
        MsgBox(ProgressBar1.Value)
    End Sub
    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        ProgressBar1.Value = e.ProgressPercentage
    End Sub
    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
        Label1.Text = "Proceso completado"
    End Sub
  yo lo intente poniendo en el evento click de mi boton:  
Código:
   BackgroundWorker1.RunWorkerAsync()
        If BackgroundWorker1.CancellationPending Then
            Exit Sub
        End If
  y cambiando esto:  
Código:
     Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim i As Integer = 0
        For i = 0 To 100
            BackgroundWorker1.ReportProgress(i)
        Next
    End Sub
  por esto:  
Código:
     Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim i As Integer = 0
        For i = 0 To dgv1.rows.count -2
            BackgroundWorker1.ReportProgress(i)
        Next
    End Sub
  pero nada, sigue pasando lo mismo, que hace el trabajo pero sin mostrar el progressbar, y dejando de responder si se cambia de ventana o se intenta hacer click en el boton cancelar