Здравствуйте, 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.