Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
20.04.2015, 16:27
|
|||
---|---|---|---|
|
|||
Взаимоблокирующие вызовы |
|||
#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); } ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=19&tablet=1&tid=1396885]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
others: | 312ms |
total: | 419ms |
0 / 0 |