asp.net выводит сообщения пользователю при длительном выполнении задания - PullRequest
2 голосов
/ 28 июня 2011

Как лучше всего отправлять сообщения пользователю во время длительного процесса в asp.net. В других языках есть метод сброса, и я вижу, что у asp.net это тоже есть, но так ли это лучше? Если нет, то как еще вы можете это сделать?

Ответы [ 3 ]

2 голосов
/ 28 июня 2011

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

Относительно хорошую статью, которая подробно объясняет это, можно найти здесь: http://www.devarchive.net/displaying_progress_bar_for_long_running_processes.aspx

0 голосов
/ 07 января 2015

Как сказал Адам Тулипер - вам нужна структура push-уведомлений, и лучшим выбором будет SignalR от Microsoft. Не нужно никуда хранить статус, ни проводить опрос. SignalR отправит все, что вам нужно, обратно в браузер, в то время как запрос, запустивший процесс (в другом потоке), отправляет свои сообщения напрямую клиенту через класс HubContext. Подробности можно найти здесь .

0 голосов
/ 28 июня 2011

Либо используйте инфраструктуру push-уведомлений (комета) http://pokein.codeplex.com/, либо сохраните свой статус в базе данных, и ваша страница либо обновится, чтобы получить статус, либо использует jQuery.ajax (), например, чтобы вернуть данные или обновитьUpdatePanel на таймере, таком как: http://msdn.microsoft.com/en-us/library/cc295400.aspx

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

...