VB 2010: Pausenfunktion programmiert, wo liegt der fehler

Gast #2297088
Lesenswert?

Hallo,

ich brauche in meinem Programm eine Pausenfunktion, da ich Digitale 
Ausgänge ein und ausschalte.

Habe es so probiert, allerdings wird meine eingegebene Pausenzeit nicht 
eingehalten, es ist immer viel kürzer.

Habe ein Modul erstellt:

Public Sub Delay(nSekunden As Long)
Dim TimeOut As Long

TimeOut = (GetTickCount / 1000) + nSekunden
Do
    Application.DoEvents

    Loop Until TimeOut < (GetTickCount / 1000)

End Sub


Was mache ich flasch?
#2297137
Lesenswert?

Also vermutlich wird die Anzahl der Ticks seit anno irgendwann zurück 
gegeben.

Nichtsdestotrotz würde ich den Thread.Sleep(int) Aufruf verwenden.

Allerdings weise ich noch darauf hin, dass beide Varianten nicht genauer 
als 9 bis 11 Millisekunden arbeiten. Das liegt an der Vergabe der 
Timeslots vom Betriebssystem. (glaub ich zumindest)
Gast #2297154
Lesenswert?

Sven H. schrieb:
> Also vermutlich wird die Anzahl der Ticks seit anno irgendwann zurück
> gegeben.
Die Anzahl Millisekunden seit der PC gestartet wurde. Läuft nach 49,7 
Tagen über, aber Windows stürzt eh vorher ab. ;-)

> Allerdings weise ich noch darauf hin, dass beide Varianten nicht genauer
> als 9 bis 11 Millisekunden arbeiten. Das liegt an der Vergabe der
> Timeslots vom Betriebssystem. (glaub ich zumindest)
Ich meine es waren 16 ms.
Gast #2297159
Lesenswert?

> Nichtsdestotrotz würde ich den Thread.Sleep(int) Aufruf verwenden.
Aha und warum? Ich sehe keine Gründe das Programm in dem Fall zu 
pausieren. Ich würde eher einen Timer laufen lassen und dessen Wert in 
einem Thread abfragen. Wird ein Zählerwert erreicht -> Signalpolarität 
ändern, fertig ist...
Gast #2297162
Lesenswert?

Geist schrieb:
> Aha und warum? Ich sehe keine Gründe das Programm in dem Fall zu
> pausieren. Ich würde eher einen Timer laufen lassen und dessen Wert in
> einem Thread abfragen. Wird ein Zählerwert erreicht -> Signalpolarität
> ändern, fertig ist...

na das ist ja umständlich - soetwas wird üblicherweise mit einem Sleep 
und einen Thread gemacht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren