ZetCode

FreeBasic Sleep Keyword

Last modified April 20, 2026

The FreeBasic Sleep keyword pauses program execution for a specified number of milliseconds. It is useful for creating delays, controlling timing, and reducing CPU usage in loops.

Basic Definition

In FreeBasic, Sleep is a built-in procedure that suspends program execution. It takes one parameter - the number of milliseconds to pause.

The Sleep function is platform-independent and provides a simple way to add delays. It is commonly used in games, animations, and user interfaces to control timing.

Simple Sleep Example

This basic example demonstrates the simplest usage of the Sleep keyword.

simple_sleep.bas
Print "Program started"
Sleep 2000 ' Pause for 2 seconds
Print "Program resumed after 2 seconds"

Here we print a message, pause execution for 2000 milliseconds (2 seconds), then print another message. The Sleep call blocks all program execution during the pause.

Sleep in a Loop

Sleep is often used in loops to control the speed of iteration.

sleep_loop.bas
For i As Integer = 1 To 5
 Print "Count: "; i
 Sleep 1000 ' Pause for 1 second between counts
Next

This example counts from 1 to 5 with a 1-second delay between each number. Without Sleep, the loop would execute too quickly to see each count.

Creating a Simple Timer

We can use Sleep to build a basic countdown timer.

countdown_timer.bas
Dim seconds As Integer = 10
While seconds > 0
 Print "Time remaining: "; seconds; " seconds"
 Sleep 1000
 seconds -= 1
Wend
Print "Time's up!"

This creates a 10-second countdown timer that updates every second. The Sleep ensures each iteration takes exactly 1 second, making the timer accurate.

Animation with Sleep

Sleep can help create simple text animations by controlling frame rate.

text_animation.bas
Dim frames(3) As String = {"-", "\", "|", "/"}
For i As Integer = 1 To 20
 Print "Loading "; frames(i Mod 4); " "; i * 5; "%"
 Sleep 150 ' 150ms delay creates smooth animation
 Cls ' Clear screen for next frame
Next

This example shows a spinning loader animation with percentage progress. The Sleep controls animation speed. Without it, the animation would be too fast to see.

User Input Delay

Sleep can provide a pause before requesting user input.

input_delay.bas
Print "Important message incoming..."
Sleep 3000
Print "The system will reboot in 5 minutes!"
Print "Press any key to cancel..."
Sleep

This shows a message after a 3-second delay. The second Sleep with no parameters waits indefinitely for a keypress. This creates a pause for user interaction.

CPU Usage Reduction

Sleep can reduce CPU usage in polling loops.

cpu_usage.bas
Dim done As Boolean = False
While Not done
 ' Check for some condition
 If GetKeyState(27) Then ' ESC key pressed
 done = True
 End If
 
 Sleep 100 ' Reduce CPU usage by pausing between checks
Wend
Print "Loop exited"

This loop checks for the ESC key but includes a 100ms Sleep to prevent CPU overuse. Without Sleep, the loop would run as fast as possible, consuming significant CPU resources.

Precise Timing with Sleep

For more precise timing, Sleep can be combined with timers.

precise_timing.bas
Dim startTime As Double = Timer
Dim targetDelay As Integer = 2000 ' 2 seconds
While (Timer - startTime) * 1000 < targetDelay
 ' Do some work here
 Print "Working..."
 Sleep 100 ' Small sleep to reduce CPU usage
Wend
Print "Precise 2 second delay completed"

This example shows how to create more precise timing than Sleep alone provides. The loop runs with small Sleeps while checking the actual elapsed time using the Timer function.

Best Practices

  • Duration: Use appropriate sleep durations - too short wastes CPU, too long feels sluggish.
  • Responsiveness: Avoid long sleeps in interactive applications.
  • Alternatives: Consider timers or events instead of sleep for complex timing.
  • Debugging: Temporarily reduce sleep times during development.
  • Platform: Remember sleep duration accuracy varies across operating systems.

This tutorial covered the FreeBasic Sleep keyword with practical examples showing its usage in different scenarios.

Author

My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.

List all FreeBasic Tutorials.

AltStyle によって変換されたページ (->オリジナル) /