Pause - die nicht das Programm einfriert

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von FAtheone.

    Pause - die nicht das Programm einfriert

    Hallo,

    gibt es eine Möglichkeit in einem Programm eine 1 Sekündige Pause einzulegen ohne eine Timer oder die Sleep-Funktion zu benutzen?

    Bei der Sleep Funktion friert er das Programm ja ein und das will ich nicht! Gibt es eine andere Möglichkeit?





    MFG

    Werewolve

    VB.NET-Quellcode

    1. Imports System.Threading
    2. Public Class Form1
    3. 'Globale Variabeln deklarieren
    4. Private WeiterGehts As Boolean = False
    5. Private ms As Integer
    6. 'Hier wird die Wartezeit in ms umgerechnet und der Thread gestartet
    7. Public Sub Wartezeit(ByVal Sekunden As Integer)
    8. ms = Sekunden * 1000
    9. WeiterGehts = False
    10. Dim T As Thread = New Thread(AddressOf Warten)
    11. T.Start()
    12. Do
    13. Application.DoEvents()
    14. Loop Until WeiterGehts = True
    15. End Sub
    16. 'Hier wartet das Programm
    17. Private Sub Warten()
    18. Thread.Sleep(ms)
    19. WeiterGehts = True
    20. End Sub
    21. End Class
    22. 'Aufruf:
    23. 'Programm warten lassen
    24. Wartezeit(10) 'Sekunden


    MFG
    GOOGLE ist mein Meister :)
    Das erzeugt einen neuen Thread und lässt den dann schlafen -.-
    Effekt = 0

    VB.NET-Quellcode

    1. Public Function NOP (Wait As TimeSpan) AS ULong
    2. Dim ZielZeit As Date = Date.Now().Add(Wait)
    3. Dim Schäfchen As ULong
    4. Do While Date.Now() < ZielZeit
    5. If Schäfchen = Schäfchen.Max Then
    6. Schäfchen = 0
    7. Else
    8. Schäfchen += 1
    9. End If
    10. Loop
    11. Return Schäfchen
    12. End Function


    Die Schäfchen kannst du natürlich auch weglassen.

    Soweit ich weiß war es früher(gaaaanz früher) üblich, in einer Schleife von 1 bis 100.000.000 zu zählen(hab ich gehört).

    Ich bezweifle aber, dass es vorteilhafter ist, als die Sleep-Funktion.


    Der Assembler-Befehl Nop (No Operation) Ist nichts anderes als Schäfchen Zählen (Inkrement des EAX-Registers um 1)
    Sleep tut wahrscheinlich nichts anderes.