Посмотрите либо на класс BackgroundWorker, либо на новый материал Task Parallel Library.То, что вы хотите - это отменить вызов в службу и описать, что делать, когда ответ получен, но не блокировать пользовательский интерфейс во время ожидания ответа.В некоторых случаях пользовательский интерфейс может ничего не набрать do , пока он ожидает ответа, например, в случае диалогового окна поиска.Пока ответ не вернется, пользовательский интерфейс на самом деле ничего не сможет сделать.Но выполнение поиска в фоновом режиме означает, что пользовательский интерфейс thread был освобожден.Это означает, что вы все еще сможете перемещать и изменять размеры окна или, возможно, переключаться на другую форму в том же приложении, пока вы ждете.Это достаточно веская причина для выполнения вызовов в фоновом режиме.