|
Взаимоблокирующие вызовы
|
|||
---|---|---|---|
#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&msg=38940801&tid=1396885]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
1375ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
30ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 1461ms |
0 / 0 |