【Delphi-多线程笔记】关于同步到主线程的记录。

昨天在D7下面晚上碰到一个问题,发现在主程序关闭的时候,出现了进程无法彻底退出,调试后发现safeLogger阻塞在PostMessage之后,等待主线程处理的状态。

D2007下面只要在Destroy的时候把sfLogger.Enable := false就好了,即使后面有投递请求的情况也不会再进行处理。

但是D7下面发现不奏效,发现D7下面在OnClose的时候,再投递关于PostMessage和sync到主线程的函数都会卡死线程。无奈,只能在关闭的时候就设定。

XE6下面发现在Destroy和OnClose时投递都没问题。

 

总结:

  D7在主窗体点击关闭后,就不要再有Sync同步函数和sendMessage了,当然PostMessage也不会执行了。

  D2007在主窗体Destroy后,就不要再有Sync同步函数和sendMessage了,当然PostMessage也不会执行了。

  XE6貌似不会造成线程死锁和死等。