По сути, вы не должны выполнять какую-либо работу в потоке пользовательского интерфейса, выполнение которой может занять некоторое время.В вашей модели представления вы должны иметь какую-либо форму объекта Command, которая привязана к кнопке вашего представления.Эта команда должна в другом потоке асинхронно вызывать ваш вызов веб-службы.Таким образом, пользовательский интерфейс никогда не будет зависать, ожидая возврата команды, потому что команда вернется очень быстро.Когда асинхронный вызов вернется, вы сможете обработать любой другой пользовательский интерфейс, который вам нужно сделать.