Salve a tutti!!
Ho questa funzione che viene generata chiamando bgw.runworkerasync()

codice:
 
Public Sub Primaria(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles bw.DoWork

        Dim roll As New eseguicallback(AddressOf esegui)
        
        If recursive = True Then
            recursive = False
            For Each elem As String In folderarray
                If elem = "EOF" Then
                    Exit For
                End If
                For Each elm As String In estarray
                    If elm = "EOF" Then
                        Exit For
                    End If
                    Dim a As String = "*"
                    elm = a & elm.ToLower
                    bw.ReportProgress(0)
                    If bw.CancellationPending Then
                        e.Cancel = True
                        Exit Sub
                    End If

                    Me.BeginInvoke(roll, elem, elm)

                Next
            Next

        Else 
            
            If bw.CancellationPending Then
                e.Cancel = True
                Exit Sub
            End If

            Me.BeginInvoke(roll, e.Argument.path, e.Argument.est)
            'esegui(e.Argument.path, e.Argument.est)

        End If
        
    End Sub
Quello che non capisco è perchè chiamata una volta la funzione (con recursive true!)appena termina i for annidati, invece di concludere la sub, itera ancora una volta su se stessa, ora ovviamente recursive è false e mi da errore!
Perchè chiama se stessa un'altra volta?
é un comportamento anomalo, che tra l'altro viene dall'interno di questa sub, ho controllato in debug e nessuna ulteriore chiamata alla sub ne cambio di valori strani a recursive.

Qualcuno ci capisce qualcosa?