Максимальное время, в течение которого может выполняться поток?

У меня есть веб-служба, которая создает поток для обработки некоторых данных в фоновом режиме. Я видел сообщение «System.Threading.ThreadAbortException: поток был прерван» в одном из моих журналов, где поток был прерван. В настоящее время я предполагаю, что поток будет работать столько, сколько требуется для выполнения задач, над которыми он работает, однако после поиска в Google исключения я увидел несколько сообщений, в которых упоминалось об увеличении свойства ExecutionTimeOut приложения в Интернете. конфигурационный файл. У меня вопрос:

Каково максимальное время выполнения потока, выполняемого в ASP.NET? Неограничен ли этот тайм-аут или все еще ограничен свойством ExecutionTimeOut приложения?


person Achilles    schedule 10.05.2010    source источник
comment
Еще одна потенциальная вещь, на которую следует обратить внимание: что произойдет, когда ответ будет завершен? Выбрасывается ли весь процесс? Очищаются ли ресурсы (например, порожденные потоки). Если это так, вам нужно будет запустить поток каким-либо другим способом, а затем передать ему работу.   -  person TheJacobTaylor    schedule 10.05.2010
comment
@TheJacobTaylor Нет, это хорошая мысль, но поток может продолжить выполнение после завершения обработки запроса.   -  person cortijon    schedule 10.05.2010
comment
О, мы уже столкнулись с этой проблемой, уловка заключается в том, чтобы убедиться, что ваш новый поток не управляет ссылкой, которая была восстановлена ​​веб-службой, иначе ссылка будет уничтожена во время сборки мусора.   -  person Achilles    schedule 10.05.2010
comment
Я нашел, почему моя ветка была убита. Если вы измените файл web.config, приложение перезапустится, тем самым убив связанные с ним потоки.   -  person Achilles    schedule 10.05.2010
comment
@MrGumbe Спасибо, я не был уверен, есть ли в .NET режим fastCGI, в котором все будет очищаться автоматически, или это может быть вариант конфигурации.   -  person TheJacobTaylor    schedule 11.05.2010


Ответы (1)


Это похожий вопрос.

Как узнать, кто убивает мои темы

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

В моей программе один индексный поток выполнялся более 26 часов, выполняя тяжелую работу с базой данных, и выполнял статическую функцию.

person Aristos    schedule 10.05.2010