The "Wait For..." actions allow you to pause your project until a particular condition is met.
Alternatives to "Wait For..."
This can be accomplished by using other actions, for instance the While Loop action, to repeat a series of actions until something happens. However, "Wait For..." actions provide a more convenient package, and have the advantage of only logging data to the FinalBuilder log when something actually happens.
Note that the "Wait For..." action is a "busy-waiting" or "polling" wait - a particular wait condition is checked every so many seconds to see if it has changed.
Concurrency Limitations with Wait For Actions
It is up to the user to ensure proper synchronisation between a "Wait For" action and the rest of the project/system. Even though a certain condition may be true when a "Wait For..." action has unblocked and continued, there is no guarantee that the condition is necessarily still true when the next action runs. Another action (or program) may change the state of the system in-between the two actions running, and it is up to the user to ensure this cannot happen.
All Wait For events have the following options in their property pages:
The action will time out if it has been running for this length of time without succeeding. Timeouts can be set in seconds, minutes, or hours. The action can be set to Fail outright or merely skip its child actions if it times out.
On Timeout, the action's OnTimedOut Script Event will be executed. By changing the "Fail" parameter inside the OnTimedOut event, a script can choose to fail or skip child actions on a case-by-case basis.
The action will pause for this long in between each poll of its given wait condition. The polling interval can be set in seconds, minutes, or hours. Regardless of polling interval, the action polls immediately when it is first run.
If the polling interval is set to zero, the action will poll as quickly as it can without pausing.
(Pausing between polling intervals will be interrupted in the case that the action times out or the user stops the project run.)
Note that the Polling Interval is not a polling frequency - it does not guarantee that the action will poll every X seconds, it only guarantees that the action will pause for X seconds in between each poll. In reality, the action will poll every X+(Length of last polling event) seconds, and in some actions (ie Wait For Remote Computer) the polling event itself may take several seconds.