Ne,
SyncError muss eine Klassenmethode sein
![Wink](images/smilies/icon_wink.gif)
Jupp, original mußte es so sein, aber seit den Generics gibt es ein zweites Synchronize, welches Prozeduren, Methoden, diese komischen Inline-Prozeduren (innerhalb einer anderen Prozedur/Methode, deren Name ich ständig vergesse) oder gar anonyme Methoden entgegennimmt.
Da kann man dann auch so kranke Sachen machen, wie eben dieses
Delphi-Quellcode:
var
X: String;
begin
X := 'Hallo Welt!';
Synchronize(procedure
begin
ShowMessage(X);
end);
end;
Geht aber erst seit D2009/D2010.
Aus einer TThread-Methode heraus und das in #41 geht überall.
Wenn man etwas nur an dieser Stelle synchronisieren will, dann finde ich es so viel übersichtlicher, da der Code dort steht, wo er aufgerufen wird.
Wird genügend Code an mehreren Stellen aufgerufen, dann natürlich immernoch die getrennte Methode,
wobei man in diesem Synchronize-Bereich auch eine Methode,
mit Parametern, aufrufen kann.
Ein Therapeut entspricht 1024 Gigapeut.