Forum: Object-Pascal / Delphi-Language
by himitsu,
10. Aug 2011
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
var
X: String;
begin
X := 'Hallo Welt!';
...
Forum: Object-Pascal / Delphi-Language
by himitsu,
21. Feb 2011
Nur um es mal erwähnt zu haben:
var S: String;
begin
...
S := 'Hallo';
TThread.Synchronize(nil,
procedure
begin
Memo1.Lines.Add(S);
Forum: Object-Pascal / Delphi-Language
by himitsu,
11. Feb 2011
Du übergibst da aber den Wert direkt an den Thread, bzw du gibst jedem Thread eine Kopie, so daß alle Threads ihre eigenen Werte haben.
In diesen Delphibeispielen nutzt du eine externe Variable für alle Threads.
> Äpfel und Birnen
Forum: Object-Pascal / Delphi-Language
by himitsu,
11. Feb 2011
Wenn man zusammen mit dem Prozedurzeiger auch noch die Parameter mit in dem Queue ablegt, dann gäbt es diesbezüglich auch keine Probleme.
Bzw., man eh nur die selbe Funktion aufrugt, dann reichen auch nur die Werte im Queue, wenn nichts verlorengehen soll.
Forum: Object-Pascal / Delphi-Language
by himitsu,
9. Feb 2011
oder ThreadHelper (mit anonymen Methoden ab D2009), bzw. AsyncCalls