Ваша тема, вероятно, только что выбросила исключение. Попробуйте поставить блок try / catch вокруг DoSomethingForALongLongTime
и посмотрите, что он подхватит.
Обновление: Я раньше не замечал, что вы запускаете это с веб-сервера. Это может быть очень плохой идеей. В частности, использует ли отдельный поток какую-либо информацию, полученную из HttpContext.Current
? Это будет включать Request
, Response
, Session
и т. Д., А также любую информацию со страницы.
Это плохо, потому что эти вещи длятся только до тех пор, пока длится запрос. По окончании запроса они становятся недействительными, если не сказать больше.
Если вам нужно запустить длительный поток из веб-приложения или веб-службы, то вам следует создать простую службу Windows и разместить в ней службу WCF. Сделайте так, чтобы веб-страница отправила всю информацию, необходимую для выполнения задачи, в службу. Служба может даже использовать MSMQ в качестве транспорта, который гарантирует, что никакие сообщения не будут потеряны, даже если служба будет занята.