У меня есть ASP.NET приложение работающее на IIS 6. Иногда (нечасто) у него будет необходимость запустить 'длинную' (до 3 мин) задачу — запись пачки данных в БД. Я знаю что такие вещи положено выносить из ASP-приложения вовне — например в сервис. Тем не менее передо мной поставлена задача сделать это в рамках ASP-приложения. Для этого я планирую создать либо поток через "new Thread(...)", либо использовать ThreadPool ASP-приложения.
Тем не менее я не знаю точно что случится если в момент когда моя 'длинная' задача будет работать, кто-то захочет остановить ASP.NET ApplicationPool (вручную или произойдёт периодический Recycling). Ну или весь IIS перезапустят.
Что будет by default — IIS будет ждать пока моя задача не завершится? Или он будет ждать только некоторое время а потом просто убьет мой поток? Как мне правильно обрабатывать такую ситуацию? Application_End вызовется ДО убийства потока занятого моей задачей? Что делает IIS с накопившимися в ThreadPool-е заданиями — просто теряет их?