запуск и остановка потоков из ASP.NET - PullRequest
0 голосов
/ 14 октября 2010

Мне нужно запустить поток, чтобы выполнить какое-то длительное задание в фоновом режиме (даже если браузер закрыт), не дожидаясь ответа на событие нажатия кнопки на веб-странице.

Мне также нужно будет остановить это позже, если пользователь захочет это сделать.

Как я могу это сделать?

Можно ли сохранить id потока в базе данных и прервать его позже?

Нужно ли делать асинхронный webservice ИЛИ wcf вызов для достижения этой цели?

Как я могу остановить долгосрочное задание позже, если это необходимо в этом случае?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 15 октября 2010

Я предлагаю вашему приложению ASP.Net записывать запросы в таблицу базы данных и обрабатывать эти запросы с помощью службы Windows.

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

База данных также дает вам постоянство, поэтому в случае сбоя сервера служба Windows может обеспечить автоматический перезапуск задач без необходимостиПользователь может отправить их повторно.

Если у вас много задач в очереди, вы можете запускать службы Windows на нескольких серверах приложений, чтобы ускорить процесс, управляемый через базу данных.

0 голосов
/ 14 октября 2010

Вы можете использовать backgroundworker class:

Создание фонового приложения, определение обработчика событий DoWork и обработчика событий RunWorkerCompleted. Затем запустите действие, используя метод RunWorkerAsync. Вы можете отменить действие, используя метод CancelAsync.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...