Background Thread и остановка ASP.NET ApplicationPool
От: Glenn  
Дата: 11.08.12 18:50
Оценка:
У меня есть ASP.NET приложение работающее на IIS 6. Иногда (нечасто) у него будет необходимость запустить 'длинную' (до 3 мин) задачу — запись пачки данных в БД. Я знаю что такие вещи положено выносить из ASP-приложения вовне — например в сервис. Тем не менее передо мной поставлена задача сделать это в рамках ASP-приложения. Для этого я планирую создать либо поток через "new Thread(...)", либо использовать ThreadPool ASP-приложения.

Тем не менее я не знаю точно что случится если в момент когда моя 'длинная' задача будет работать, кто-то захочет остановить ASP.NET ApplicationPool (вручную или произойдёт периодический Recycling). Ну или весь IIS перезапустят.

Что будет by default — IIS будет ждать пока моя задача не завершится? Или он будет ждать только некоторое время а потом просто убьет мой поток? Как мне правильно обрабатывать такую ситуацию? Application_End вызовется ДО убийства потока занятого моей задачей? Что делает IIS с накопившимися в ThreadPool-е заданиями — просто теряет их?
Glen
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.