Forum: Programmieren allgemein
by himitsu,
10. Mär 2010
Doch, sie ist dennoch sicher, da dann die CS sperrt und somit andere keinen Zugriff haben.
Vorteil bei der offenen deklaration, man kommt auch mal richtig an die StringListe ran, falls man sie z.B. mal sortieren oder sonstwas damit machen will.
sl := ThreadStringList.lockStringList;
try
// mache irgendwas
// z.B.: sl.Delete(AIdx);
finally
Forum: Programmieren allgemein
by himitsu,
10. Mär 2010
Eine andere, zwar aufwändigere, aber dafür flexiblere Variante wäre
- direkt von TStringList abzuleiten,
- das FCriticalSection : TCriticalSection; hinzuzufügen
- und dann alles, welches in TStringList und TStrings als Virtual gekennzeichnet ist zu überschreiben
Hat noch den Vorteil, daß es wie eine normale StringListe verwendet werden kann.
procedure TThreadStringList.Lock;
begin
...
Forum: Programmieren allgemein
by himitsu,
9. Mär 2010
Hab's nicht getestet,
aber ja, es sollte ist Threadsave sein.
nur bei den Zugriffen würde ich überall noch etwas mehr absichern:
var
sl : TStringList;
begin
sl := lockStringList;
try
// mache irgendwas