Поскольку это веб-сайт, вам, вероятно, понадобится использовать какой-то метод ajax для периодического обратного вызова на сервер.Вот основной поток вашей программы, насколько я вижу:
- Пользователь делает первоначальный вызов
- Раскрутите новый поток, чтобы запустить процесс и вернуться с состоянием 0%
- Периодически вызывайте веб-сервер через ajax (вызов GetStatus, который будет возвращать процент завершения)
- Если вызов завершен, обновите / обновите страницу соответствующим образом
- Если вызов не завершен, используйте возвращенный статус
Теперь я не настолько уверен в деталях, учитывая, что это веб-страница, но вы могли быпопробуйте периодически сохранять состояние в переменной сеанса (что может или не может быть возможно после того, как вы уже вернулись), и тогда GetStatus просто прочитает самое последнее состояние.Если сессия не работает, вам нужно сохранить статус другим способом (БД, файл и т. Д.).
Только будьте осторожны с тем, как часто вы сохраняете статус.Слишком часто и вы замедляете свой процесс, и слишком мало, и вы не предоставляете точное представление о состоянии.
Последнее, если вы можете перейти на .NET 4.0, то это становится еще более тривиальным с использованием TPL(Задача параллельной библиотеки)