Stealing from Uwe Raabe's article Synchronize and Queue with Parameters I do this:
if GetCurrentThreadID = MainThreadID then
FDataLogger(IntToStr(lNrItems) + ' elements:')
else
TThread.Synchronize(nil,
procedure
begin
FDataLogger(IntToStr(lNrItems) + ' elements:');
end);
But if I just
TThread.Synchronize(nil,
procedure
begin
FDataLogger(IntToStr(lNrItems) + ' elements:');
end);
that seems to work as well.
Since the first construct leads to more code, is there really much benefit from distinguishing the main thread?