【发布时间】:2015-10-25 08:14:06
【问题描述】:
昨天专家建议在线程执行函数中使用“while not terminate do begin...”来检查线程终止属性并从内部优雅地退出线程。我们刚刚测试了代码,但它仍然无法终止线程。但是这个线程可以通过在外部调用 TerminateThread 函数来立即终止。执行函数或执行函数中的那个大while循环有缺陷吗?或者在使用while未终止循环时有什么特殊要求?
顺便问一下,endthread、exitthread 和 terminatethread 有什么区别?如何使用它们?哪个比较好?
再次感谢您的帮助。
【问题讨论】:
-
永远不要从外部杀死线程。它使应用程序处于未定义状态。
-
您的线程很可能正在等待事件或类似事件。使用调试器来确定它在做什么。还值得一提的是 TThread.Waitfor,它允许您确保线程在释放之前停止。
-
TerminateThread 应重命名为 RandomlyDeadlockMyProcessAndOccasionallyCorruptMyMemory。
-
期待下一版Delphi的新命名:)
标签: delphi