Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto per un timer..

Salve a tutti, dovrei realizzare un piccolissimo programma che faccia una
cosa ogni 30 minuti circa, ma ho notato che il timer di visual basic non
accetta valori superiori a 60 secondi.
Esiste qualche oggetto che posso inserire che faccia al caso mio?
Grazie

 ha scritto nel messaggio
news:%bN_a.3725$zN5....@news1.tin.it...
: Salve a tutti, dovrei realizzare un piccolissimo programma che faccia una

Ogni 60 secondi controlli l'ora di sistema (con Now() ed affini), un po'
dispendioso in termini di risorse ma è la prima cosa che mi è venuta in
mente.
Ciao, Luca.

 ha scritto nel messaggio

Dimenticavo la soluzione alternativa...ci sono diversi programmi che fungono
da schedulatore, utilizza uno di quelli e pianifica l'avvio della tua
appliczione ogni 30 min.
Ciao, Luca.

"Smartgatto"

*loop.vbs>>>mettilo il loop (in questo caso c:\loop.vbs)
 (occupa meno di 2 mb di memoria cioe meno dello scheduler)
set oShell = CreateObject("WScript.Shell")
oShell.run"fai la tua cosa"
WScript.Sleep 960 * 2000 ' sleep15 x 2   30 minuti
oShell.run"c:\loop.vbs"
--
Fosco

 accetta valori superiori a 60 secondi.
Ogni 60 secondi incrementi una variabile statica, ogni volta che arriva a 30
fai quello che devi fare. L'occupazione di risorse da parte del Timer è
virtualmente nulla.

 ha scritto nel messaggio
news:%Uo%a.245147$Ny5.7...@twister2.libero.it...

potresti richiamare l'evento "timer" di VB (non l'oggetto, il modulo)
es:
Dim a As Data
a = Minute(Time)
If Minute(Time) = (a + 30) Then
   'esegui ciò che vuoi
End If
Usa una quanità di memoria infinitesimale ^_^
Kerberos


potresti richiamare l'evento "timer" di VB (non l'oggetto, il modulo)
es:
Dim a As Data
a = Minute(Time)
If Minute(Time) = (a + 30) Then
   'esegui ciò che vuoi
End If
Usa una quanità di memoria infinitesimale ^_^
--{-Kerberos-}--

 ha scritto nel messaggio
news:%bN_a.3725$zN5....@news1.tin.it...

Tempo fa ricordo di aver utilizzato il seguente.
Problematiche, penso, se inizi prima della mezzanotte e finisci dopo.
Private Sub tempo()
Dim t1, t2 As Single
Dim i As Integer
Dim pausa As Integer
pausa = 10 'secondi
For i = 1 To 10
t1 = Timer
Do While Timer < (t1 + pausa)
    DoEvents
Loop
t2 = Timer
Debug.Print "Ciclo " & i & " / tempo: " & t2 - t1
Next
End Sub
giuseppeD

 Usa una quanitŕ di memoria infinitesimale ^_^
Sě, ma l'if risulterŕ essere sempre falso :)
P.S.: a satŕ un intero, non una data
Ciao
--
Math Parser, VB.Framework : 
http://www.neodatatype.net
Sito Comune               : 
http://www.it-lang-vb.net

 ha scritto nel messaggio
news:%bN_a.3725$zN5....@news1.tin.it...


End Sub
Occhio che cosi' rischi di accumulare dei ritardi se sulla macchina
sono in esecuzione processi piu' o meno pesanti.
Considera che, nel caso di rallentamenti, i messaggi del timer sono
gli ultimi ad essere elaborati e, non solo, non ne viene mai accodato
piu' di uno alla volta.
Piuttosto che contare i minuti e' preferibile verificare il tempo
trascorso dall'esecuzione precedente:
Private Const m_Minuti As Long = 60
Private m_PrevExecTime As Date
Private Sub tmrTimer_Timer()
	If (m_PrevExecTime = 0) Then
		m_PrevExecTime = Now()
		Call FunzioneDaChiamare	
	Else
           If (DateDiff("n", Now, m_PrevExecTime) >= Minuti) Then
		m_PrevExecTime = Now()            	
		Call FunzioneDaChiamere
           End If
        End If
End Sub
-- 
ciao, hal