Delphi Dll线程使用Synchronize同步导致线程假死的解决方法

经试验可以在dll工程文件中加入以下语句 :

Application.Initialize;

if Application.Handle = 0 then
begin
    Application.CreateHandle;
end;

Application.Run;

解决线程中使用Synchronize 假死的问题,或者在线程中直接使用SendMessage替代Synchronize同步。

原因在于若工程文件是DLL而不是EXE的话,Application默认不创建窗口句柄,因此Synchronize向Application发送消息根本无法响应,手动创建句柄,并让其进入消息循环状态可以解决

猜你喜欢

转载自blog.csdn.net/mengzhongren2/article/details/75072976