为什么文档说不从主线程调用Synchronize?

时间:2017-02-16 09:11:55

标签: delphi

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;

正如您可以看到它是否从主线程调用,该函数将被简单执行,那么无限循环的危险在哪里?

0 个答案:

没有答案