Gå til innhold

Anbefalte innlegg

Hallo

 

Har prøvd å telle millisekkunder nå, men det ser ikke helt ut til å virke! Bruker denne koden her nå:

Dim i As Long
Dim o As Long

Private Sub Command1_Click()
i = 0
o = 0
Timer1.Interval = 1
Timer2.Interval = 1000
Timer1.Enabled = True
Timer2.Enabled = True
End Sub

Private Sub Timer1_Timer()
i = i + 1
Text1.Text = i
End Sub

Private Sub Timer2_Timer()
o = o + 1
Text2.Text = o
End Sub

Text1 skal vel nå 1000 akkurat når text2 når 1 osv, sant? eller er ikke interval i millisekkunder? Den koden der funker hvertfall ikke..

Lenke til kommentar
Videoannonse
Annonse

En timer med interval 1 vil ikke alltid kjøres 1000 ganger i sekundet. Dette er fordi en timer ikke tar i bruk multithreading og går derfor ikke videre på neste oppgave før den forrige er kjørt. Det brukes også mye systemressurser på å opptegne en tekst flere tusen ganger i sekundet. En timer kan heller ikke kalles tusen ganger, så for å løse dette sett interval til 10 eller høyere og adder variabelen med 10.

Lenke til kommentar
Prøv heller:

Dim t_Start As Double
Dim t_End As Double
Dim milliseconds As Double
t_Start = Timer()
t_End = t_Start + 1
Do : While Timer() < t_End
t_end = Timer()
milliseconds = t_end - t_start
MsgBox Str(milliseconds), vbInformation

Du er vel klar over at den koden bruker 100% av prossesoren? Det du bør gjøre er å legge til en Sleep deklarering.

 

Private Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long)

 

Så skriver du f.eks Sleep 1 for å pause treaden i ett millisekund.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...