我使用FreeOnTerminate := true
放弃了将其显式设置为false,但现在每次尝试显式释放线程时代码都会锁定。我确定锁定发生在Free
语句。
对于线程进程的最后一步,我正在向我在主对象中创建的窗口句柄发送一条消息,表示“完成”。在那里我正在运行一个事件,然后免费。为什么会这样?
答案 0 :(得分:6)
我认为这是典型的多线程死锁。
当你的线程通过sendmessage发送结束信号时,线程等待sendmessage返回,然后它将做任何其他事情(例如免费程序)。同时,你的主线程在完成事件并处理线程的sendmessage之前等待线程释放。
您是否尝试使用postmessage而不是立即返回并且不等待结果?