Разговаривая с ребятами из команды WCF, я понимаю, как это работает.Если вы просто сделаете вызов из фонового потока, он не будет работать, так как подсистема WCF перенаправит вызов обратно в поток, из которого вы изначально открыли соединение (обычно поток UI).Итак, вам нужно создать рабочий поток, а затем явно открыть соединение из этого потока .Затем, всякий раз, когда вы делаете вызов, он отправляется обратно в этот поток.И, конечно же, после того, как вы получили обратный вызов и выполнили свою обработку (в фоновом потоке), убедитесь, что все изменения пользовательского интерфейса перенесены обратно в поток пользовательского интерфейса с помощью Dispatcher.BeginInvoke ().