ThreadAbortException
возникает, когда ваше приложение закрывается и вы звоните EmailWorkerThread.Abort()
. Это ожидаемое поведение, и оно происходит в случайных местах, потому что код может находиться в разных «точках», когда Application_End
вызывает Abort()
в потоке.
Согласно MSDN , ThreadAbortException
является специальным исключением, которое всегда перебрасывается даже после обработки вашим кодом. Он предназначен для того, чтобы вы знали, что поток завершает работу, чтобы дать вам возможность очистить.
Ваше приложение, вероятно, закрывается, потому что IIS закрывает рабочий процесс после определенного периода простоя или какого-либо другого наложенного ограничения. Опять же, этого следует ожидать, приложения ASP.NET, как правило, имеют «ограниченное время жизни», поэтому такие долго работающие потоки не очень хорошая идея.
Я не уверен, какой был ваш точный вопрос, но, надеюсь, я ответил на него.