Sleep

Waits until a specified time has elapsed, or a key is pressed.

Syntax
   Declare Sub Sleep ( ByVal amount As Long = -1 )
   Declare Function Sleep ( ByVal amount As Long , ByVal keyflag As Long ) 
   As Long

Usage
   Sleep [ amount [, keyflag ]]
   result = Sleep ( amount, keyflag )

Parameters
   amount
      Optional number of milliseconds to wait (default is to wait for a key 
      press).
   keyflag
      Optional flag; give it a value of 0 for a normal sleep, or 1 to 
      specify that the wait cannot be interrupted by a key press.

Return Value
   Returns 1 if keyflag was not a valid value (i.e. something other than 0 
   or 1) to indicate failure, or 0 otherwise.

Description
   Sleep will wait until amount milliseconds (can be seconds in -lang qb, 
   see below) given elapsed (if any value was passed) or until the user 
   presses a key. If amount is below 100 ms then Sleep will always wait the 
   full requested amount (key presses are ignored).

   Include the second parameter, 1, for a "deep" sleep, which cannot be 
   interrupted by pressing a key.

   The accuracy of Sleep is variable depending on the OS cycle time 
   (Windows NT/2K/XP: 15 ms, 9x/Me: 50 ms, Linux 10ms, DOS 55 ms).

   Call Sleep with 25ms or less to release time-slice when waiting for user 
   input or looping inside a thread.  This will prevent the program from 
   unnecessarily hogging the CPU.

   Sleep does not clear the keyboard input buffer and any keys pressed 
   during a call to Sleep are retained and can be later read by Inkey or 
   GetKey or Input.
   When Sleep has no parameters (waiting for a key pressed only), GetKey 
   keyword can be used instead of Sleep.
   For the general form of Sleep (with parameters), if the user want to 
   clear the keyboard input buffer from any eventual keys pressed during 
   the Sleep execution, he can use after the Sleep instruction line 
   something like the following method:
   While Inkey <> "": Wend  '' loop until the keyboard input buffer is empty
         

Example
   Print "press a key"
   Sleep
   GetKey  '' clear the keyboard input buffer, and even in that code case, the 'Sleep' keyword can be outright omitted
   Print "waiting half second"
   Sleep 500
      

   Dim As String s

   Print "wait 3 seconds or press a key"
   Sleep 3000
   Print "outputed by timeout or key pressed"
   While Inkey <> ""  '' loop until the keyboard input buffer is empty
   Wend

   Input "enter a string"; s
   Print "string entered: " & "'" & s & "'"

   Sleep
      

Dialect Differences
   * In the -lang fb and -lang fblite dialects, the amount value is in 
     milliseconds.
   * In the -lang qb dialect, the amount value is in seconds as in QB. If 
     the second parameter keyflag is given, or the keyword is written as 
     __Sleep  the value is expected to be in milliseconds.

Differences from QB
   * None in the -lang qb dialect.
   * In QB, the delay was given in whole seconds only and did not support 
     the keyflag parameter.

See also
   * Timer
   * Inkey

