Очередь нескольких запросов от приложения SL4 к сервису - PullRequest
0 голосов
/ 20 сентября 2011

В моем приложении Silverlight есть несколько псевдоглобальных объектов, которые заполняются данными с сервера.Мой класс 'сервисного агента' зарегистрирован в контейнере IoC как одноэлементный, поэтому он будет кэшировать данные для предотвращения чрезмерных обращений к серверу.

Однако я сталкиваюсь со сценарием, когда делается несколько запросов«агенту службы», пока первоначальный запрос еще не обработан.В то время как я смотрю на другие вопросы дизайна, влияющие на ситуацию, мне интересно, какие у вас есть идеи, как справиться с этим.Моя первоначальная мысль - каким-то образом поставить в очередь запросы, если вызов уже выполняется, а затем обработать их при получении данных.

1 Ответ

0 голосов
/ 17 ноября 2011

В конце концов, я все-таки пошел с подходом к очереди и блокировке.У меня есть флаг «занято», который указывает на то, что вызов службы выполняется.При значении true все последующие запросы помещаются в очередь путем добавления делегата обратного вызова в коллекцию, и метод возвращается.Когда асинхронный вызов службы возвращается, я просто перебираю коллекцию и выполняю каждый обратный вызов.Кажется, он работает довольно хорошо (в асинхронной модели).

...