You don't say which true/false case should only execute when the event occurs. The big one or the small one???
How often should the loop run if the event occurs? How often should channelselect run?
The code in its present form does not look very intuitive. It is difficult to tell what it does.
Here's one possibility of the big case should only happen whenever the value has changed. The exact implementation will depend quite a bit on how the rest of the code works.