Во-первых, Если вы не уверены, что вам нужно, не начинайте новый поток, подобный этому, с страницы или приложения ASPNET. Используйте пул потоков.
См Advantage of using Thread.Start vs QueueUserWorkItem
Что касается вашего вопроса - как получить прогресс обновления в браузере, без обновления страницы ... Я предполагаю, что вы знаете, как использовать элементы управления в ходе JQuery. В вашем вопросе рассматривается, как подключить такой контроль выполнения к серверной логике. Единственный способ сделать это - через запросы, я предлагаю ajax, от браузера к серверу.
Если бы я был вами, я бы предоставил рабочий поток для включения его статуса в ресурс на сервере - либо сеанс пользователя, либо базу данных, либо что-то в этом роде. Затем запросите запрос ajax из запроса страницы.
В сценарии REST, статус может быть доступен на
http://myserver/Application/WorkItem12345/status
... где WorkItem12345
это идентификатор, который указывает на работника или задания, происходит асинхронно. Ведение HTTP GET на этот URL со страницы на сервер, вы получите результат в формате JSON с указанием статуса, может быть, это выглядит следующим образом:
{"message": "working", "progress":56}
или
{"message": "completed", "progress":100}
или
{"message": "fault", "progress":14}
т.д.
Там должно быть приложение на сервере, который отвечает на http://myserver/Application/WorkItem12345/status
и отвечает соответствующим сообщением. Эта логика состояния должна выглядеть в слоте или ресурсе, где поток Worker отправляет свой статус - все, что вы выбрали для использования, - а затем создайте объявление, чтобы вернуть JSON.
Добавление
Если вы не хотите использовать JQuery, механики одинаковы, но вы должны написать свой собственный браузер на стороне виджет пользовательского интерфейса, который может отображать обновление статуса. В простом случае это простой div с html-контентом, который показывает ответ JSON. если вы хотите стать более привлекательным, вы можете сделать его фактическим прямоугольным баром, который растет по мере продолжения работы.
Но как построить этот виджет, это тема для другого вопроса.
Смотрите также: Dino Esposito's MSDN Magazine article on the topic
хорошо, я думаю, что я могу использовать пул потоков вызывают число потоков, которые могли быть запущены ограничено (только для пользователей в ограниченной роли могут получить доступ к этой странице). – kenny
Извините, забыл отметить: нет jQuery, пожалуйста. – kenny
Я буду использовать сеанс, чтобы сохранить статус прогресса. Что касается виджета, это не проблема. Я обработаю его. Мне нужно больше объяснений относительно запросов AJAX. – kenny