WAIT
WAIT [ Delay ]
Call the event loop recursively.
If Delay is specified:
The function does not return until
Delay seconds elapse.
Delay is a floating point number. So, if you want to wait 100 ms, just do:
Wait 0.1
If Delay is zero:
The function processes all pending events and returns immediately, without ignoring any event.
Before Gambas 3.18, WAIT 0
was an equivalent of WAIT 0.001
.
If Delay is not specified:
The function processes all pending events and returns immediately, but in that specific case,
input events (keyboard and mouse) are ignored.
This specific effect only occurs with GUI components.
WAIT NEXT
Since 3.15
WAIT NEXT
Call the event loop recursively, and waits until at least one event is processed.
Examples
' Waits a little, letting the user interacts with the GUI.
Wait 0.05
' Waits, but the user can just watch what happens...
Wait
' Wait until at least one event is processed.
Wait Next
If you call
WAIT
from an event handler, you may create infinite recursions, and then stack overflows.
For example, look at the following code:
PUBLIC SUB MySerialPort_Read()
DIM sData, sTemp AS String
DIM iTries AS Integer
FOR iTries = 1 TO 5
' wait a bit and read response.
WAIT 0.01
' see if we got some data.
READ #LAST, sTemp, Lof(LAST)
sData &= sTemp
...
NEXT
END
WAIT
is called without reading anything on the serial port. So it is yet ready for being read, and the Read event is raised recursively again and again until the stack is full.
In that case, you can solve the problem by using the
SLEEP instruction instead.
See also