Как CLR вызывает исключение ThreadAbortException? - PullRequest
1 голос
/ 22 апреля 2011

Если вы прерываете один управляемый поток из другого, используя Thread.Abort, как CLR фактически создает исключение в другом потоке?Похоже на аккуратный трюк!

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Я недавно написал пост в блоге. Первая часть о том, когда поток может быть прерван, вторая - о том, как он на самом деле работает.

Я никогда не видел правильной (в данном случае полной) документации о том, как это на самом деле работает, поэтому я написал об этом.

Суть в том, что CLR будет использовать SetThreadContext (API-интерфейс win32), чтобы перехватить ваш текущий IP-адрес и переместить вас в специальную заглушку для настройки прерывания потока, если вы не ожидаете прерывания.

Проверьте пост здесь

1 голос
/ 03 июня 2011

Я нашел несколько интересных ссылок на эту тему. ThreadAbortException - особый случай, и он обрабатывается специально CLR.

http://mnikoo.net/2007/02/07/the-magic-of-the-clr-threadabortexception/

http://blogs.msdn.com/b/clrteam/archive/2009/04/28/threadabortexception.aspx

...