In addition to my first solution, I just remembered that I've already posted a tip for solving this issue, two months ago (How could I forget it... :) ).
You can try to use my SuspendedButton. In the
BeforeClick event-handler, start the animation and, in the
Click event-handler, perform the task that has to be done after the animation is finished.