Если у тебя одна кнопка там асинхронная, то все вернется на гуевый поток, конечно, и на нем одном выполнится. Но всякие там Task.Run, а так же configureawait false так же могут отправить твой код выполняться на разные потоки, даже если ты не запускал тредов. Оно пойдет на тредпульные треды, и то же самое - словишь рейс кондишн.
Я подозреваю, что ты неспроста начал асинхронность городить для тяжелых вычислений - как правило следующий шаг - сделать
task.run, в случае cpu-bound вычислений, иначе у тебя ui все одно будет подфризиваться.