Hi, Ton
I support the answere of mje with one additional thought:
I suppose your application is running in two asynchonous loops, which results in multiple threads on your machine.
Multiple threads (multithreading) forces programms, which are not using the CPU at this moment to switch to background,
so another application could run for a couple of miliseconds.
If you execute your sender loop to send the "stop" command, it it's using the CPU completely by sending the command and
directly destroying the event, so there is no point for the computer to force the process to the background.
By adding a wait functionality, the thread will be halted for just a millisecond or less, even with a zero connected to the terminal.
Within this milisecond your listener loop is able to receive the event request to execute.
After that, the sender thread comes back and destroys the event.
So the behavior you've described is not a bug, but a multithreading dependend problem.
To solve this problem, you could force the sender thread to wait for just a milisecond as you did.
But this way of programming is not very good, because as mje already said, it results in undefined states.
You should consider to add some synchronisation functionality in your code as I would do, or just don't destroy the event,
because LabVIEW will take care of that on it's own (also not good style).
Greetings, LogMAN