Пишу веб-сервис, который принимает команды от пользователей, складывает в очередь и возвращает по запросу.
есть 2 метода
[WebMethod(true)]
void pushCommand(Command cmd)
{
commandList.Add(cmd);
}
[WebMethod(true)]
Command[] getCommands()
{
int lastCmd = Session[LAST_CMD];
Command[] cmds = commandList.getNextCommands(ref lastCmd);
return cmds;
}
хочу сделать так, чтобы не приходилось периодически опрашивать службу о наличии свежих команд.
1.в клиенте асинхронно вызываю getCommands
2.допустим в getNextCommands, если нет свежих команд, мы ждем, пока не будет новой доступной команды.
3.проблема: при попытке запихнуть службе так сильно желаемую ею команду, служба уже висит в getNextCommands
и ни за какие плюшки оттуда не вылазит.
Как заставить службу обрабатывать другие запросы, пока она ждет завершения первого?
Помогите, кто может.