Re[8]: .NET5 и CER
От: pilgrim_ Россия  
Дата: 20.11.20 17:11
Оценка:
Здравствуйте, Serginio1, Вы писали:

_>>Если "системный код" — это неуправляемый код, то Thread.Abort тут ничем не поможет, т.к. Thread.Abort реализован средствами CLR (соотв. никак не связан с TerminateThread) — проставляется спец. флаг что требуется Abort, который в определенных, хз каких, местах исполняемого кода проверяется, известно только где не проверяется (catch, finnaly, CER, неуправляемый код, может где еще). По этому флагу и генерится исключение ThreadAbortException, который можно перехватить и да, сбросить его (ResetAbort).


S> Как это не поможет. Есть два пути


Выделил для тебя

S>1. В основном коде вызываем в try catch и запускаем наблюдающий поток и если завис бросаем Thread.Abort

S>2. Запускаем отдельный поток в котором в блоке try catch вызывается проблемная функция и через таймаут бросаем Thread.Abort.

S> Реально Thread.Abort в связке Thread.ResetAbort работает и в основном потоке. Практика!


Путано излагаешь, неважно откуда был вызван Thread.Abort, важно что прервать Abort можно только в прерываемом потоке с пом. перехвата ThreadAbortException и вызова Thread.ResetAbort.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.