我有一个线程有时会由于永远不会返回的 DLL 调用而冻结(我怀疑)。在一般情况下,当您调用像 Indy 这样的阻塞例程时,是否有一种方法可以通过触发线程 OnTerminate 处理程序来从中恢复?如果我调用 TerminateThread 会发生这种情况吗?
TerminateThread()
是立即暴力终止。它不会让OnTerminaate
事件火灾。唯一的办法OnTerminate
可以触发的是如果线程的Execute()
方法通过正常方式退出,无论是优雅地还是通过引发未捕获的异常(这将设置线程的FatalExpection
财产)。
特别是在 Indy 的情况下,可以通过断开套接字与另一个线程的上下文的连接来中止阻塞套接字操作。对于阻塞 DLL 函数来说,这通常是不可能的,除非它们在 API 中公开了此类功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)