Da ich mich nicht mit userevents beschäftigt habe bisher nur ne Vermutung: Kann es sein, dass du die Leuchte nicht mit "Value (signaling)" setzt? Wenn du das nur mit "Value" oder direkt per wire auf das Anzeige / Bedienelement setzt, dann wird vermutlich bei Userevents (wie bei den normalen Events auch) kein Event generiert (da es sich nicht um eine Nutzerinteraktion handelt).
Das könnte schon das ganze Problem sein.
Ansonsten:
Einfachste Lösung wäre, wenn du nix gegen Pollen hast, entweder direkt den (aus einer Lokalen Variable gelesenen) Wert des Schalters in der Schleife benutzen (in die Schleife natürlich ein entsprechendes angemessenes Wait). Wenn du zusätzlich da noch Events behandeln willst, kannst du statt dem Wait einfach den Timeout benutzen (so wird der Schalter jeweils spätestens nach dem Timeout gelesen).