Я застрял на этом около двух недель. Так может ли кто-нибудь сказать мне, есть ли ограничение WCF, что только один обратный вызов за раз может обрабатываться объектом обратного вызова? Я пробовал практически все, что мог найти, пытаясь решить эту проблему, но все равно не нашел места.
Я создал очень простое приложение: клиент вызывает службу, затем служба делает два обратных вызова клиенту одновременно: обратный вызов A, который занимает много времени; затем обратный вызов B, повторно вызывает в цикле, даже когда A находится в обработке. Проблема в том, что B никогда не дозвонится, пока A находится в обработке. Но как только А вернется, Б сразу же пройдет.
Вот что я пробовал: 1. Установите ConcurrencyMode в Multiple или Reentrant как на клиенте, так и на сервисе; 2. Установите для UseSynchronizationContext значение False как на клиенте, так и на службе; 3. Запустить вызов службы из рабочего потока на клиенте; 4. Создает прокси (служебный канал) в рабочем потоке на клиенте; 5. Запустите оба обратных вызова в собственном рабочем потоке службы; 6. Сделать оба обратных вызова односторонними.
Ни одна из этих проблем не решена. Единственное, о чем я сейчас думаю, это то, что это может быть ограничение WCF. Поэтому, если кто-то может пролить свет на это, он будет очень признателен.