Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
372
Assunto : Visual Basic
Titulo: Controlando o tempo em loops

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Inicialmente poderia parecer complicado fazer com que um determinado loop rode exatamente por um determinado periodo de tempo (segundos ou algo menor que isso), mas utilizando algumas funções da API do windows podemos obter esse resultado. Veja :

#If Win32 Then
Private Declare Function GetTickCount _
Lib "kernel32" () As Long
#Else
Private Declare Function GetTickCount _
Lib "User" () As Long
#End If

Essa função, GetTickCount, nos fornece um número que funciona quase que como um timer. Utilizando uma função que nos dê a diferença entre 2 chamadas de GetTickCount chegamos ao resultado desejado. Veja a função :

Public Function TickDiff( _
ByVal TickStart As Currency, _
ByVal TickEnd As Currency) As Long

' CCur(2 ^ 32)
Const TwoToThe32nd As Currency = 4294967296@

' Handle two's complement for values larger than
' 2147483647&
If TickStart < 0 Then
TickStart = TickStart + TwoToThe32nd
End If
' Handle two's complement AND the case where
' timeGetTime/GetTickCount wraps at (2 ^ 32)ms,
' or ~49.7 days:
If (TickEnd < 0) Or (TickEnd < TickStart) Then
TickEnd = TickEnd + TwoToThe32nd
End If
' Return the result
TickDiff = TickEnd - TickStart
End Function

Agora veja como utiliza-la :

Public Sub SampleLoop()
Dim TickStart As Currency
TickStart = GetTickCount()
' Loop for 5 seconds
Do While TickDiff(TickStart, GetTickCount()) _
< 5000
' loop code here
Loop
End Sub

Primeiramente foi pego na variável TickStart o valor de GetTickCount. O loop então é feito com base no resultado da função TickDiff : Quando a diferença entre o start e o GetTickCount atual for maior que 5000 (5 segundos) o loop para.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br