ThreadAbortException
не может быть пойман "полностью";он будет автоматически переброшен в конце блока catch
(см. связанную страницу документации MSDN) , если сначала не будет вызван Thread.ResetAbort
.
Итак,единственным разумным блоком catch
будет:
catch (ThreadAbortException)
{
// possibly do something here
Thread.ResetAbort();
}
Но это действительно злой запах.Вероятно, нет причин делать это, поэтому вы, возможно, захотите переосмыслить свой подход.
Обновление: Существует множество вопросов по SO, связанных с Thread.Abort
:
Этот имеет тот же ответ, что я дал здесь. У этого есть ответ, который расширяется словами "никогда не звоните Thread.Abort
, если только Ктулху не поднимается" (который я значительно смягчил до "злого запаха").
Естьтакже многие другие.