In LabVIEW, data flow determines when block diagram elements execute. A node executes after receiving all required inputs, and then the node generates data to pass to the next node in the dataflow path. Event-driven programming allows you to influence this execution with an event, or an input that provides an asynchronous notification that something occurred. For example, if you want an event to occur when the user presses a specific key on the front panel, you can design an application to include a loop that waits until the key press event occurs, handles that event, and returns to wait for the next event. While the loop waits for the event to occur, other parts of the application can continue to run. How the application handles each event depends on the code written for that specific event. Some sections of the program may execute frequently because the events those sections handle occur frequently, and other sections of the program may not execute at all because the events never occur.