delphi doc表示我们无法从主线程
中调用TThread.synchronize
警告:不要在主线程中调用Synchronize。这可能会导致无限循环。
但是我不太明白为什么因为TThread.synchronize
会做
class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False);
var
SyncProc: TSyncProc;
SyncProcPtr: PSyncProc;
begin
if CurrentThread.ThreadID = MainThreadID then
begin
if Assigned(ASyncRec.FMethod) then
ASyncRec.FMethod()
else if Assigned(ASyncRec.FProcedure) then
ASyncRec.FProcedure();
end else
....
end;
end;
正如您可以看到它是否从主线程调用,该函数将被简单执行,那么无限循环的危险在哪里?