本文整理自网络,侵删。
TThread.Queue和TThread.Synchronize的区别,效果上:二者的作用都是让业务代码在主线程中执行,差别: Synchronize是阻塞,Queue是非阻塞代码上 两个方法最终都是调用的 class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False)类方法,差别Synchronize则是使用了Thread对象中的FSynchronize对象变量,然后QueueEvent为False来调用TThread.Synchronize类方法, 内部在执行FSynchronize时,创建了事件对象,通过WaitForSingleObject来阻塞执行。 Queue调用是自己创建了一个PSynchronizeRecord, 然后QueueEvent为True来调用TThread.Synchronize类方法,内部则把PSynchronizeRecord放入SyncList列表中,然后退回,并不直接执行PSynchronizeRecord, 那问题来了,在那里执行呢?Delphi在TApplication.Idle方法中执行(最终调用了CheckSynchronize)
Over――――――――――――――――
原文链接:https://blog.csdn.net/wingleo/article/details/53860300
相关阅读 >>
Delphi中如何判断mediaplayer控件所播放的文件是否播放完毕?
Delphi 10.3 处理csv tstreamreader 自带split用法
Delphi simple resource api replacement
Delphi与用windows 7下的用户账户控制(uac)机制
更多相关阅读请进入《Delphi》频道 >>