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()
questa è la mia sub esegui.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
Private Sub esegui()
codice:primo() ' richiama la sub primo secondo() ' richiama sub secondo End sub

Rispondi quotando