You have two event structures in one while loop. Both event structures must complete before the while loop repeats. So, if one event structure is busy executing code and the other times out, neither will get a shot at a new event until that first event structure stops being busy and completes.
What you want is a queued state machine driven by an event structure. You enqueue states inside the event structure and the state machine (in a separate while loop) dequeues them and executes what you want. If you need more parallelism, you can make a second queued state machine and feed it from the same event structure. Just run both queue references in to the event structure. I've included an example of an event-driven queued state machine. There's a
regular queued state machine example as well. I built the examples at a local LabVIEW user group.
Daniel L. Press
PrimeTest Corp.
www.primetest.com