View Full Version : [VB] Uso del timer
GogetaSSJ
14-08-2004, 21:01
Salve ragazzi, sto proprio impazzendo con il controllo timer, non riesco a capirne il suo funzionamento.
In pratica devo mettere "a tacere" il programma utilizzando il timer, non voglio usare l'api Sleep perchè occupa risorse ed il programma sembra busy.
Ad esempio imposto un Interval di 30 secondi, poi setto .Enabled = True e chiamo la sub del timer, la quale fa eseguire un'operazione nulla (k = 0)
Questo è inserito in una Do While che esegue delle operazioni, il risultato è che il programmino mi va in infinite loop :(
Come si usa sto benedetto timer? dove sbaglio?
Function sleep(Dt)
t0 = Timer
Do Until Timer - t0 > Dt
DoEvents
Loop
End Function
GogetaSSJ
14-08-2004, 21:50
Già non ci avevo pensato :D
A parte gli scherzi, un paio di righe di commento? Non ho capito proprio tutto, thx ;)
è una funzione sostitutiva della Sleep implementata in VB.
non blocca gli altri eventi ma introduce un ritardo di Dt secondi nel programma.
GogetaSSJ
14-08-2004, 22:12
Lo proverò e ti farlò sapere, grazie mille!
GogetaSSJ
14-08-2004, 23:26
Ho creato la function che mi hai suggerito, ma quando si attiva lo sleep la cpu schizza al 100%, cosa che vorrei evitare.
Come lo imposto il ciclo ed il timer?
Grazie ancora.
prova a togliere il Do Events
L'attesa attiva è sempre sconsigliata... Questa non blocca gli eventi dell'interfaccia utente, ma è pur sempre un'attesa attiva...
In VB puoi usare il Timer già presente nel framework (l'orologio nella toolbox di sinistra) o le API di Windows...
GogetaSSJ
15-08-2004, 21:48
Ecco ifnatti sono + propenso ad usare il timer, come ho detto prima, anche xkè me lo hanno altamente consigliato (vedi altri thread miei in questa sezione)
Ma non riesco a gestirlo come si deve, mi sono letto un paio di guide ma nada, non ne capisco la meccanica :(
Suggerimenti?
Vuoi che un evento si verifichi ogni 30 secondi ?
Inserisci 30000 nel campo interval del timer...
La procedura di gestione del timer (doppio click sul timer) è quella che viene chiamata ogni 30 secondi...finita quella procedura il timer verrà inizializzato nuovamente...
Per disattivarlo o attivarlo basta agire su .Enabled...
GogetaSSJ
16-08-2004, 10:38
Quindi se imposto l'interval a 30 secondi ed ho attivo il timer, ogni 30 secondi ripete la stessa azione, creando una sorta di ciclo? Se è così sarebbe perfetto, appena ho 2 minuti vedo di provarlo.
Spero di aver capito bene, grazie mille! ;)
GogetaSSJ
21-08-2004, 16:53
Sto riscontrando ancora problemi, in pratica ho un ciclo FOR e, all'interno di esso, mi serve la famosa PAUSA, la quale è impostata con un timer chiamato appunto PAUSA. Ma non funziona, è come se non ci fosse :cry:
Questa è la codifica:
pausa.Interval = timerserv 'iimpostato a 20000 sono 20 secondi? (credo di si)
pausa.Enabled = True
For I = 0 To ciclo
SendKeys "{ENTER}", True
pausa_timer
Next I
.....
Private Sub pausa_timer()
SendKeys "^{PGDN}", True
End Sub
C'è qualcosa di logico che ho sbagliato?
In pratica questo ciclo mi serve per switchare tra un tab e l'altro in firefox, ad un tempo prefissato di secondi (timerserv) per un certo numero di volte (ciclo). Lui mi fa tutto all'istante fregandosene delle pause :(
Questo timer mi fa impazzire!! Help me!
GogetaSSJ
21-08-2004, 21:25
Mi risulta sempre busy con il tuo metodo, ora ho capito come funziona il timer e va alla grande :D
Grazie a tutti per i consigli ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.