Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET 2008] problema thread

    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
    Delfino Cobalto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Sposta questa

    mythread = New Threading.Thread(AddressOf Me.esegui)

    prima dello Start
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Grazie Oregon hai confermato il mio sospetto
    adesso funziona.
    Delfino Cobalto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.