2. You forgot that SetVisibleAnimated is an async method:
Not forgot - not aware.
Im guessing that the effect is that the first call does what it likes, and the second call may be trying to do what it does , while the first is still operating.
Is there a way to make one wait for the other to complete, or to call it with a delayed start?
Try changing the Sleep(500) to sleep (1000) and see if it works.
My hunch is that the first animation has to complete before a new one will work, and setting the animation time to 500ms and the delay to 500ms is to close for comfort.