|
Взаимоблокирующие вызовы
|
|||
---|---|---|---|
#18+
Добрый день.Ситуация такая:клиенты и служба общаются по wsDualHttpBinding,служба существует в одном экземляре(single),многопоточна(Multiple);в callback интерфейсе есть один метод который через n-ый промежуток времени вызывает служба у всех клиентов(isOneWay=true).Так же при необходимости(вход,ход игрока..) клиент вызывает метод службы.Если выпадает ситуация когда клиент вызвал метод службы и пока он не завершился, служба успевает по таймеру вызывает метод клиента и после этого на службе завершается метод который вызвал клиент(завершается стандартно),но клиент так и остается заблокированным(ему ничего не преходит) - все завершается тем, что на клиенте появляется ошибка что прошло время ожидания ответа и служба ничего не вернула.Метод который вызвала служба по таймеру не срабатывает тоже. //интерфейс,методы которого(методы клиентов) будет вызывать сервер public interface IServiceContractCallback { [OperationContract(IsOneWay = true)] void CheckUpdateMap(Information inf); } //интерфейс,методы которого будут вызывать клиенты [ServiceContract(CallbackContract = typeof(IServiceContractCallback))] public interface IServiceContract { [OperationContract] Information Login(string names, string passwords); [OperationContract] void DisLogin(); [OperationContract(IsOneWay = true)] void SearchPlayer(int x, int y, int id); } ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2015, 16:27 |
|
|
start [/forum/topic.php?fid=19&fpage=7&tid=1396885]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 378ms |
0 / 0 |