从 Uwe Raabe 的文章中窃取
Synchronize and Queue with Parameters 我这样做:
if GetCurrentThreadID = MainThreadID then
FDataLogger(IntToStr(lNrItems) + ' elements:')
else
TThread.Synchronize(nil,
procedure
begin
FDataLogger(IntToStr(lNrItems) + ' elements:');
end);
但如果我只是
TThread.Synchronize(nil,
procedure
begin
FDataLogger(IntToStr(lNrItems) + ' elements:');
end);
这似乎也有效。
由于第一个构造导致更多代码,那么区分主线程真的有很多好处吗?
最佳答案
尽管文档警告您这样做,但 TThread.Synchronize 中的实际代码类似于所示的包装代码。所以我很确定你可以使用较短的版本。
也许我在写那篇文章时也被文档误导了(或者在古代可能被 Delphi 5 左右的这种行为所困扰)。
关于multithreading - 在主线程中调用 TThread.Synchronize,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60737872/