当我在线程上调用Free时,为什么我的程序会挂起?

Gle*_*234 3 delphi multithreading

我放弃使用FreeOnTerminate := true支持将其显式设置为false,但现在每次尝试显式释放线程时代码都会锁定.我确定在Free声明中发生了锁定.

对于线程进程的最后一步,我正在向我在主对象中创建的窗口句柄发送一条消息,表示"完成".在那里我正在运行一个事件,然后免费.为什么会这样?

Jus*_*ade 6

我认为这是典型的多线程死锁.

当你的线程通过sendmessage发送结束信号时,线程会等待sendmessage返回,然后它会做任何其他事情(例如免费程序).同时,您的主线程在完成事件并处理线程的sendmessage之前等待线程释放.

您是否尝试使用postmessage而不是立即返回并且不等待结果?