Отслеживание процесса одноэлементного процесса в веб-приложении

2

Когда я нажимаю кнопку запуска (в моем Default.aspx), процесс запускается (этот процесс связывается с веб-сервисом для получения некоторых файлов и т.д.). Как я:

  • Убедитесь, что за один раз выполняется только один процесс (т.е. если я обновляю браузер, я не хочу запускать этот процесс во второй раз)

  • Прогресс в отслеживании - есть 4 точки процесса (25%, 50%, 75%, 100%), которые я хочу отслеживать, и когда каждая часть завершается, я хочу обновить индикатор выполнения. У меня есть объект статуса для текущего процесса, но вопрос в том, как автоматически обновить индикатор выполнения?

  • Нужно ли использовать потоки для достижения вышеуказанных двух?

Теги:
multithreading
singleton

1 ответ

0
Лучший ответ

Отвечая на них в обратном порядке:

  1. Да. И у вас должен быть объект для инкапсуляции потока.

  2. У вас может быть открытый член вашего объекта, который содержит% от вашего процесса. Вы можете периодически это опробовать. Способ, которым вы будете делать это со своей HTML-страницы, вероятно, является запросом AJAX, чтобы сделать ваш индикатор прогресса самым плавным.

  3. Вам нужно выполнить некоторую синхронизацию потоков. Может быть, через Mutex. Вот хороший пример того, как это сделать (прокрутите вниз до Mutex).

  • 0
    Благодарю. Не могли бы вы объяснить, почему мне нужны темы в этом сценарии? У меня только один процесс и нет параллельной деятельности. Если я сохраню объект Process (или просто объект Status, который имеет свойство IsRunning) в HttpApplicationState, я получу доступ к запущенному процессу каждый раз, когда обновляется браузер, верно?
  • 0
    @Свами. На самом деле у вас есть несколько потоков. Если вы выполняете запрос в том же потоке, в котором обрабатывается страница, то эта страница никогда не будет возвращена пользователю. Вот почему вы хотите запустить новый поток для решения вашей задачи. Также вы не хотите связывать потоки IIS с фоновой активностью, такой как ваша обработка.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню