Oppure

Loading
24/02/13 14:07
xProgrammer89x
Salve a tutti, come in titolo, vorrei sapere in che modo posso nel seguente linguaggio utilzizzare pause.

Mi spiego meglio.

Cliccando su un bottone, vengono richiamate le funzioni "uno()", "due()", "tre()", "quattro()", "cinque()", E vorrei che alla fine di ognuna, ci sia un tempo di attesa, prima di far partire la seguente, per esempio di 5 secondi.

Ho provato in questo modo, senza successo, dopo aver aggiunto un riferimento a System.Threading.Thread

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Uno()
        Sleep(5000)
        Due()
        Sleep(5000)
        Tre()
        Sleep(5000)
        Quattro()
        Sleep(5000)
        Cinque()
        Sleep(5000)
    End Sub


Il problema sta, che il programma non funziona da come previsto, a quanto pare, somma tutte le pause, quindi 25.000 ms di attesa in totale, li attende, dopodichè esegue le cinque funzioni tutte in fila senza aspettare nulla.

Ne ho dedotto quindi che al posto di Sleep, debba usare qualche altra cosa del tipo Wait, che non credo esista, o Delay, che a quanto capito è la stessa cosa, si chiama in questo modo in altri linguaggi.

Qualcuno sa in che modo potrei risolvere?

Avevo pensato di usare una serie di Timer, o anche di usarne 1 solo, modificando di volta in volta l'intervallo in caso non voglia fare 5 secondi dappertutto, ma credo che sia una... "pezza"^, voi che ne dite?
Ultima modifica effettuata da xProgrammer89x 24/02/13 14:15
aaa
24/02/13 15:44
Ultimo

Prima di ogni sleep prova a mettere Application.Doevent , ciauz
If ok Then GOTO Avanza else GOTO Inizia

25/02/13 12:37
ampeg
l'uso del timer non è affatto una pezza, esiste apposta per fare ciò che ti serve
inoltre ti permette di avere il controllo totale sull'applicazione nel caso devi annullare l'operazione o gestire eventuali eccezioni
aaa
01/03/13 8:11
piter123
ciao,

call Ritardo(1000) 'crea una pusa di 1 secondo



Public Sub Ritardo(ByVal TIME_RITARDO As Integer)
'IL VALORE RITARDO E' IN MILLISECONDI 1 SECONDO=1000
Dim StartTime As Date = Now
Do
Application.DoEvents()
Loop Until (Now - StartTime).TotalMilliseconds > TIME_RITARDO
End Sub
aaa