Preemptive evaluations can occur as a result of Dynamic, Button, EventHandler and other interface constructs, as well as preemptive MathLink connections.
Any preemptive evaluation requested during the evaluation of PreemptProtect[expr] will be queued until the PreemptProtect is complete.