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