The events are just a more-efficient way to do something simple: Waiting for a variable to change.
In theory, you could just use polling to wait for a variable to change by checking it over and over until it does. But it's wasteful for the CPU to keep looping like that. So instead you can use an event to announce when a variable changes, so there's no looping.