ho una SUB di una applicazione che deve girare ogni x minuti indipendente e soprattutto senza bloccare la form. allo scopo ho utilizato un Thread.

per rendere visibile il tempo trascorso dall'ultima esecuzione della sub ho utilizzato un
Timer. il timer incrementa un contatore Counter ed una progressbar. superato il limite Maxcount Il timer richiama il mio thread "mythread.Start()"

il primo richiamo al thread è OK e funziona ma al successivo richiamo,
il programma mi restituisce il seguente errore
Thread is running or terminated; it cannot restart

non ho utilizzato Sleep nel thread perchè non sapevo come gestire la Barra progresso


questo è il codice incriminato

Nella Form1_Load ho messo (elimino dal post codice non pertinente)
codice:
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
Dim mythread As Threading.Thread
        mythread = New Threading.Thread(AddressOf Me.esegui)  ' esegui è la mia routine

questo è il mio timer
il timer viene attivato da un pulsante che richiama Mytimer.start()

codice:
 
Private Sub Mytimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mytimer.Tick

        Counter = Counter + 1
        Dim maxcount As Integer = 100
        progressbar.Maximum = maxcount
       
        If Counter > maxcount Then

            If mythread.IsAlive <> True Then
                Counter = 0
                mythread.Start()
            End If

       End If
        progressbar.Value = Counter
End Sub
questa è la mia sub esegui.

Private Sub esegui()

codice:
 
 primo()  ' richiama la sub primo
secondo() ' richiama sub secondo

End sub