2009-03-23 3 views
1

У меня есть процесс, который вызывает вызовы в веб-службу и обрабатывает ответы, некоторые ответы требуют ввода какого-либо пользователя, поэтому они могут обрабатываться. Когда требуется вход пользователя, я хочу вызвать событие, в обработчике событий я хочу отобразить форму на странице, а затем дождаться, пока пользовательский ввод будет отправлен назад, а затем обработчик события вернет вход пользователя в вызывающий метод.Ждите ввода пользователя

У меня возникли трудности с тем, что обработчик события дожидался сообщения, прежде чем возвращать вход, я даже не знаю, возможно ли это.

ответ

0

Если я правильно понимаю, я думаю, проблема в том, что вы пытаетесь решить проблему, используя очень простую систему на основе событий. Что вам нужно сделать, так это создать собственную (очень простую) систему документооборота для такой задачи, а также попытаться выделить часть логики внутреннего интерфейса из обработки пользовательского интерфейса (структура ASP.NET MVC была бы идеальной для этого, хотя Я вижу, что вы используете WebForms, что, тем не менее, не является большой проблемой). Теперь этот «рабочий процесс» не обязательно должен быть сложным. Начните с разбивки действий, выполняемых вашим приложением, на какую-то схему потоков. Если вы можете видеть довольно простые зависимости, то это может быть просто вопрос реализации основного конечного автомата. Как общий указатель на работу с состояниями в веб-приложениях (всех видов: приложение, сеанс, просмотр), прочитайте некоторые ссылки на this page. Боюсь, я не могу предоставить вам что-либо более конкретное из того, что вы описали (возможно, мне не хватает чего-то очевидного). Если вы хотите уточнить задачи, которые должен выполнять ваш веб-сайт/веб-приложение, я мог бы привести примеры кода, но я подозреваю, что простое рассмотрение этой проблемы аналитически/с точки зрения потока должно дать вам хорошее решение ,

0

Лично я предпочитаю предложение Нолдорина выяснить рабочий процесс и использовать его, чтобы определить, когда запрашивать ввод. Имейте в виду, что серверные события не будут делать ничего, что касается визуализации на стороне клиента, если они не произойдут, когда пользователь делает свой запрос ... в этом случае у вас уже есть рабочий процесс и нет необходимости в событиях.

Вы можете обойти это, сохранив клиентскую машину в общении с сервером. Например, проверьте новые события в событии Tick элемента управления <asp:Timer>. Это решение практично, если ваша цель состоит в том, чтобы, например, иметь панель обновления или что-то, что говорит о том, что сервер выполнил обработку запроса пользователя на XX% и попросил ввести данные пользователя после завершения обработки.