Since this must be executing on the UI thread, the UI never gets a chance to update before the method exits. Even if this was executing in parallel with the UI thread, it would go way too fast for the UI to properly display the animation.
You need a timer mechanism to pace the updates and have it run on a background thread. Alternatively, you could make the method async and insert await Task.Delays
between each assignment of the image source.