我看到了很多关于如何终止锁定线程的问题,每一个答案都说不要杀死线程,甚至不要使用Thread.Abort,只需使用良好的编程实践来处理线程何时停止。
我的问题是,我被困在一个旧的第三方库中,我无法控制,有时这会锁定,几乎使用100%的CPU并且永远不会释放。Thread.Abort无法停止它。我找不到任何方法来停止它。
我找到的最好的“解决办法”是使用委托和.AsyncWaitHandle.WaitOne(10000, false)。超时后,代码将从此处继续执行,但仍然运行着的任何线程将继续运行并使用所有的CPU。
我该如何处理这种情况?如果这个第三方库锁定了,我需要一种方式来终止它。
谢谢您的时间, Ben
我的问题是,我被困在一个旧的第三方库中,我无法控制,有时这会锁定,几乎使用100%的CPU并且永远不会释放。Thread.Abort无法停止它。我找不到任何方法来停止它。
我找到的最好的“解决办法”是使用委托和.AsyncWaitHandle.WaitOne(10000, false)。超时后,代码将从此处继续执行,但仍然运行着的任何线程将继续运行并使用所有的CPU。
我该如何处理这种情况?如果这个第三方库锁定了,我需要一种方式来终止它。
谢谢您的时间, Ben
Thread.Abort
只能在线程执行托管代码时起作用,因此对于本地第三方库来说,它没有帮助。因此,将有问题的代码分离到一个新的简单进程中,从您的应用程序运行并在需要时终止它。 - Luaan