Вопрос

У меня есть веб-страница, которая читает данные из внешнего источника. Это может принять некоторое время для получения данных.

Мне было интересно, если бы кто-то мог дать мне представление о наилучшем способе, чтобы это произошло на заднем плане. Я хотел бы, чтобы страница появилась и отображала «обработку» (или что-то такое) на панели, где данные в конечном итоге будут отображаться.

Я подумал о компонент Flain Worker, или, возможно, AsyncPostBacktrigger ... Не уверен, что они даже решит проблему к моему удовлетворению.

Итак ... У кого-нибудь есть какие-то идеи относительно хорошего подхода к проблеме?

Спасибо за совет!!

Это было полезно?

Решение

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

.NET имеет ряд различных методик для поддержки запросов AJAX - от UpdatePanel контролирует Async-операции. Отказ Какую технику вы используете, зависит от деталей именно то, что вы пытаетесь сделать.

Вы также можете просто использовать библиотеку, как jquery Чтобы сделать Async запросы на контент на отдельную страницу или услугу в вашем веб-приложении.

Другие советы

Я бы использовал AJAX, отправьте страницу пользователю с сообщением обработки, затем запрашивайте внешний источник из XMLHTTPREQUEST, используя JavaScript (через ваш сайт как прокси).

Ну, одно решение - придерживаться asp:Timer На вашей странице внутри панели обновления *. Иметь OnTick Событие извлекает текущее состояние обработки (процент прогресса, если это сделано, что он делает и т. Д.). Существуют различные способы обработки, которая может уведомить страницу его прогресса; Просто давая ему свойство прогресса и обновлять его, так как он работает, это один из способов сделать это. Обратите внимание, что то OnTick событие не будет выполнять обработку; Это просто выяснить состояние обработки.

* Если вы поместите его за пределами панели обновления, она отметит каждый Interval вместо каждого Timer.Interval + TimeToReloadUpdatePanel, что будет большой проблемой, если TimeToReloadUpdatePanel >= Timer.Interval.

Мое мышление состоит в том, что веб-запросы должны быть быстрыми, поэтому я буду искать способы улучшить производительность запроса. Если данные будут одинаковыми для каждого запроса, я бы попробую кэшировать его. Если это невозможно, я бы использовал jQuery, чтобы сделать async запрос и отобразить изображение загрузки до завершения запроса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top