什么时候Thread.Abort()实际上不会中止?

cae*_*say 5 c# multithreading abort

所以你看了标题,Thread.Abort()什么时候才能实际中止?我听说很多人说它是一个危险的命令,它永远不能保证工作,但我从来没有真正能够重现它.它总是对我有用..

是否有可能导致Thread.Abort的()失败的任何具体情况consistantly

ta.*_*.is 9

你有没看过文件

线程不保证立即中止,或根本不中止.如果线程在作为中止过程的一部分调用的finally块中执行无限量的计算,则会发生这种情况,从而无限期地延迟中止.要等到线程中止,可以在调用Abort方法后调用线程上的Join方法,但不能保证等待将结束.

...

如果在尚未启动的线程上调用Abort,则在调用Start时线程将中止.如果在被阻塞或正在休眠的线程上调用Abort,则线程被中断然后中止.

如果在已挂起的线程上调用Abort,则在调用Abort的线程中抛出ThreadStateException,并将AbortRequested添加到正在中止的线程的ThreadState属性中.在调用Resume之前,不会在挂起的线程中抛出ThreadAbortException.

如果在执行非托管代码时在托管线程上调用Abort,则在线程返回托管代码之前不会抛出ThreadAbortException.

如果两次同时调用Abort,则一次调用可以设置状态信息,另一次调用可以执行Abort.但是,应用程序无法检测到这种情况.

在线程上调用Abort后,线程的状态包括AbortRequested.由于成功调用Abort导致线程终止后,线程的状态将更改为Stopped.如果具有足够的权限,则作为Abort目标的线程可以使用ResetAbort方法取消中止.有关演示调用ResetAbort方法的示例,请参阅ThreadAbortException类.