Newsgroup: it.comp.lang.visual-basic
Titolo: Sostituire funzione Sleep

Salve a tutto il NG
ho scritto un programma nel quale ho usato tale funzione, però noto che 
quando viene chiamata ed effettua lo sleep dei secondi da me determinati, il 
sistema subisce un rallemtamento nonchè un uso delle risorse non poco 
indifferente.
Ci sarebbe altro sistema per effettuare un ritardo pari alla funzione Sleep 
ma con meno conseguenze?
Ringrazio tutti per le risposte 

 Ringrazio tutti per le risposte 
Prego :-)
bye

 ha scritto nel messaggio 
news:43ea3896$0$28075$4faf...@reader1.news.tin.it...

No, fermi tutti!
Una Sleep "congela" la tua app, ma proprio per questo lascia *tutte* le 
risorse che invece andrebbero al tuo programma libere per il SO, quindi la 
cpu torna prossima allo zero e le altre app sono libere di girare sfruttando 
tutte le risorse rimaste libere.
Ciao 

 ma con meno conseguenze?
Io di solito uso la wait function MsgWaitForMultipleObjects come fatto
da Sergey Merzlikin: (copia e incolla tutto in un modulo e poi usa
MsgWaitObj(msec) al posto di sleep)
_______________________________________________________________________
'********************************************
'*    (c) 1999-2000 Sergey Merzlikin        *
'********************************************
Private Const WAIT_TIMEOUT As Long = 258&
Private Const WAIT_FAILED As Long = &HFFFFFFFF
Private Const STATUS_TIMEOUT = &H102&
Private Const INFINITE = -1& ' Infinite interval
Private Const QS_KEY = &H1&
Private Const QS_MOUSEMOVE = &H2&
Private Const QS_MOUSEBUTTON = &H4&
Private Const QS_POSTMESSAGE = &H8&
Private Const QS_TIMER = &H10&
Private Const QS_PAINT = &H20&
Private Const QS_SENDMESSAGE = &H40&
Private Const QS_HOTKEY = &H80&
Private Const QS_ALLINPUT = (QS_SENDMESSAGE Or QS_PAINT _
        Or QS_TIMER Or QS_POSTMESSAGE Or QS_MOUSEBUTTON _
        Or QS_MOUSEMOVE Or QS_HOTKEY Or QS_KEY)
Private Declare Function MsgWaitForMultipleObjects Lib "user32" _
        (ByVal nCount As Long, _
         pHandles As Long, _
         ByVal fWaitAll As Long, _
         ByVal dwMilliseconds As Long, _
         ByVal dwWakeMask As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long
' The MsgWaitObj function replaces Sleep,
' WaitForSingleObject, WaitForMultipleObjects functions.
' Unlike these functions, it
' doesn't block thread messages processing.
' Using instead Sleep:
'     MsgWaitObj dwMilliseconds
' Using instead WaitForSingleObject:
'     retval = MsgWaitObj(dwMilliseconds, hObj, 1&)
' Using instead WaitForMultipleObjects:
'     retval = MsgWaitObj(dwMilliseconds, hObj(0&), n),
'     where n - wait objects quantity,
'     hObj() - their handles array.
Public Function MsgWaitObj(Interval As Long, _
            Optional hObj As Long = 0&, _
            Optional nObj As Long = 0&) As Long
    Dim T As Long, T1 As Long
    If Interval <> INFINITE Then
        T = GetTickCount()
        On Error Resume Next
        T = T + Interval
        ' Overflow prevention
        If Err <> 0& Then
            If T > 0& Then
                T = ((T + &H80000000) _
                + Interval) + &H80000000
            Else
                T = ((T - &H80000000) _
                + Interval) - &H80000000
            End If
        End If
        On Error GoTo 0
        ' T contains now absolute time of the end of interval
    Else
        T1 = INFINITE
    End If
    Do
        If Interval <> INFINITE Then
            T1 = GetTickCount()
            On Error Resume Next
         T1 = T - T1
            ' Overflow prevention
            If Err <> 0& Then
                If T > 0& Then
                    T1 = ((T + &H80000000) _
                    - (T1 - &H80000000))
                Else
                    T1 = ((T - &H80000000) _
                    - (T1 + &H80000000))
                End If
            End If
            On Error GoTo 0
            ' T1 contains now the remaining interval part
            If IIf((T1 Xor Interval) > 0&, _
                T1 > Interval, T1 < 0&) Then
                ' Interval expired
                ' during DoEvents
                MsgWaitObj = STATUS_TIMEOUT
                Exit Function
            End If
        End If
        ' Wait for event, interval expiration
        ' or message appearance in thread queue
        MsgWaitObj = MsgWaitForMultipleObjects(nObj, _
                hObj, 0&, T1, QS_ALLINPUT)
        ' Let's message be processed
        DoEvents
        If MsgWaitObj <> nObj Then Exit Function
        ' It was message - continue to wait
    Loop
End Function
___________________________________________________________________
-- 
*******************
Free As In Freedom
-= 
www.fsf.org
 =-

 Ringrazio tutti per le risposte
Sě, ma sarebbe anche carino far sapere che fine fanno quelle risposte...
-- 
Salutoni
Sergio
e ti ho sparato sulla bocca invece di baciarti
perché non fosse troppo lungo il tempo di lasciarti. 
Forse non lo sai ma pure questo č amore.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 MsgWaitObj(msec) al posto di sleep)
[CUT]
Ti ringrazio
Provo e ti faccio sapere 


aumentano il mio bagaglio culturale in ambito di VB ;-)