«Проблема» в том, что среда выполнения .NET владеет вашим потоком .NET.Так, например, когда вы вызываете Abort, внутреннее устройство времени выполнения выдает исключение ThreadAbortException в контексте .NET вашего потока .NET, и именно так вы можете перехватить его в своем потоке, используя catch (ThreadAbortException).
ИТо же самое верно и для ThreadState, так как он имеет базовое право собственности на ваш поток, он точно знает, что он делает, и, следовательно, может создать действительное состояние потока.
Поскольку не существует нехакенского способа официально запрашиватьпоток для его внутреннего состояния, вы можете обернуть это в классе.Но опять же, вы будете полностью зависеть от метода потока, который будет соответствовать любым запросам .Abort ().