Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB.NET] Timer klopt niet

Pagina: 1
Acties:
  • 573 views sinds 30-01-2008
  • Reageer

  • Josvds
  • Registratie: November 2004
  • Laatst online: 14-10 22:25
Ik heb een popup melder gemaakt, maar de timer klopt niet.
Wanneer ik de applicatie start doet hij het goed, komt het venster langzaam omhoog.
Maar namate hij omhoog komt gaat hij veel sneller.

Ik heb nu een meet instrument ff gebouwd.

1000 metingen van 10 ms = 10 seconden

starttijd:19:18:08.2656250
eindtijd: 19:18:23.8750000

verschil is : 15.609375 seconden

hoe kan dit?

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Wat is je timer.tick? En eens de timer gestart is, hoe controlleer je of die om de 10 seconden iets moet weergeven?

Maw, relevante code aub?

Going for adventure, lots of sun and a convertible! | GMT-8


  • user109731
  • Registratie: Maart 2004
  • Niet online
De timer geeft volgens mij ongeveer een veelvoud van 15 ms. terug. 1000 metingen is 15 * 1000 = 15 seconden? :)

[ Voor 16% gewijzigd door user109731 op 08-10-2007 19:33 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
De timer resolutie gaat sowieso maar tot (at best) iets van 50ms 10ms; voor hogere resolutie zul je naar high-resolution timers moeten gaan. Overigens is dit méér dan eens besproken hier op GoT

[ Voor 55% gewijzigd door RobIII op 08-10-2007 19:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Josvds
  • Registratie: November 2004
  • Laatst online: 14-10 22:25
Ik heb gezocht maar kon niet echt relevante stuke vinden die hierover gingen.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Class Form1

    Dim timed As Integer = 0

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        timed += 1

        If (timed = 1) Then
            TextBox1.Text = DateAndTime.Now.TimeOfDay.ToString
        End If

        If (timed = 1000) Then
            TextBox3.Text = DateAndTime.Now.TimeOfDay.ToString
            Timer1.Enabled = False
        End If

        TextBox2.Text = timed
    End Sub
End Class

[ Voor 1% gewijzigd door een moderator op 08-10-2007 19:43 . Reden: Code tags toegevoegd ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Josvds schreef op maandag 08 oktober 2007 @ 19:40:
Ik heb gezocht maar kon niet echt relevante stuke vinden die hierover gingen.
En dus mogen wij het nu voor je oplossen? Met de bovenstaande posts moet je er prima uit kunnen komen; heb je nog concrete vragen dan ben je van harte welkom, maar we gaan het hier niet van voor-tot-achter voor je voorkauwen.
Hoe komt het toch dat mensen wel de small-tag weten vinden maar niet de code tags??

[ Voor 14% gewijzigd door RobIII op 08-10-2007 19:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Volgens mij is de minimale "tick" waarde voor 32bit OSes 15ms en voor 64bit OSes 10ms.
Sowieso meet je nu gewoon de "total time" voor 1000 ticks, dat duurt dus 15.6s, ofwel je hebt een 32 bits OS (1000 * 15ms) en je hebt 0.6s "overhead" door je code en/of andere CPU load.

Wat er volgens mij mis is met je "orginele popup probleem" is dat je "scroll functie" langer dan 1 tick duurt. Ofwel: je loopt out-of-sync. Als je in die functie als eerste commando de Timer disabled en als laatste commando weer enabled, dan heb je daar geen last.

Mooier is om gewoon een background thread te starten en die dan in een loop - inc. een Thread.Sleep (25) - voor je scrollt, zodanig heb je in ieder geval een regelmatige scroll. En wees lief voor de CPU, een gebruiker zit niet op 100% CPU load te wachten omdat er een popup getoond moet worden .... ;)

'Political Correctness is fascism pretending to be good manners.' - George Carlin


  • Josvds
  • Registratie: November 2004
  • Laatst online: 14-10 22:25
SKiLLa schreef op maandag 08 oktober 2007 @ 20:16:
Volgens mij is de minimale "tick" waarde voor 32bit OSes 15ms en voor 64bit OSes 10ms.
Sowieso meet je nu gewoon de "total time" voor 1000 ticks, dat duurt dus 15.6s, ofwel je hebt een 32 bits OS (1000 * 15ms) en je hebt 0.6s "overhead" door je code en/of andere CPU load.

Wat er volgens mij mis is met je "orginele popup probleem" is dat je "scroll functie" langer dan 1 tick duurt. Ofwel: je loopt out-of-sync. Als je in die functie als eerste commando de Timer disabled en als laatste commando weer enabled, dan heb je daar geen last.

Mooier is om gewoon een background thread te starten en die dan in een loop - inc. een Thread.Sleep (25) - voor je scrollt, zodanig heb je in ieder geval een regelmatige scroll. En wees lief voor de CPU, een gebruiker zit niet op 100% CPU load te wachten omdat er een popup getoond moet worden .... ;)
Ik had een loop gemaakt met een sleep er in.. Maar dan springt hij ineens omhoog.. Moet dit wel mogelijk zijn met een sleep methode?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Josvds schreef op maandag 08 oktober 2007 @ 22:45:
Ik had een loop gemaakt met een sleep er in.. Maar dan springt hij ineens omhoog.. Moet dit wel mogelijk zijn met een sleep methode?
Als je nou eens stopt met vragen stellen en eens gewoon wat probeert. Het wordt hier echt niet op prijs gesteld om iemand aan het handje te moeten houden. We helpen je, echt, van harte maar dan zien we wel graag dat je zelf ook wat moeite doet en inzet toont. Je zou 't op z'n minst dus eens kunnen proberen voordat je hier vraagt en als je er dan niet uit komt heb je at least een x aantal concrete vragen.

Overigens is het ook onzin om elke keer complete lappen tekst te quoten en daar maar 1 zin aan toe te voegen; je kunt een quote prima inkorten tot de relevante gedeeltes waar je op replied.

[ Voor 25% gewijzigd door RobIII op 08-10-2007 23:38 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1