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發送消息根本無法響應,手動創建句柄,並讓其進入消息循環狀態可以解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章