Man sollte das meistens sowieso nur für kurze Methoden verwenden
und wenn diese Methode auch nur an einer Stelle verwendet wird.
IMHO ist der Code so eventuell sogar besser lesbar, da der Code so direkt lesbar ist, als wenn man erst zu der Methode springen muß.
Delphi-Quellcode:
...
if Tasks.Count > 0 then begin
Tasks[0].RunTask(OverViewF.cmdProgressBackground);
Text := Log.GetLastRow;
end else
Text := 'Nothing to do';
SpringeInHauptthread;
begin // man kann gern noch ein logisches begin/end einfügen ... muß man aber nicht
if Text <> OverviewF.lblTaskBackground.Caption then
Log.AddLog('Setting label to from "' + OverviewF.lblTaskBackground.Caption + '" to "' + Text + '"');
OverviewF.lblTaskBackground.Caption := Text;
end;
SpringeZurückInDenEigentlichenThread;
...
Und grade bei der Synchronisierung ist hier der Vorzeil, daß man lokale Variablen, der übergeordneten Methode, direkt und sogar
treadsave an die anonyme Methode übergeben kann, während man bei einer "richtigen" Methode keine Parameter übergeben kann und somit das praktisch mindestens thread-global übergeben muß, inkl. externer Variablen.