Jan*_*gen 7 delphi multithreading delphi-10.3-rio
窃取 Uwe Raabe 的文章 使用参数进行同步和队列我这样做:
if GetCurrentThreadID = MainThreadID then
FDataLogger(IntToStr(lNrItems) + ' elements:')
else
TThread.Synchronize(nil,
procedure
begin
FDataLogger(IntToStr(lNrItems) + ' elements:');
end);
Run Code Online (Sandbox Code Playgroud)
但如果我只是
TThread.Synchronize(nil,
procedure
begin
FDataLogger(IntToStr(lNrItems) + ' elements:');
end);
Run Code Online (Sandbox Code Playgroud)
这似乎也有效。
由于第一个构造会导致更多代码,那么区分主线程真的有很多好处吗?
尽管文档警告您这样做,但TThread.Synchronize中的实际代码类似于所示的包装代码。所以我很确定你可以使用较短的版本。
也许当我写那篇文章时,我也被文档误导了(或者在古代可能被Delphi 5左右的这种行为所困扰)。