Zitat von
Klaus01:
..kann mal wer über die Klasse schauen und Kritik üben.
Hallo Klaus01, bei Deiner Klasse solltest Du lockStringList und unlock als privat deklarieren.
Denn wenn Public, und es wird lockStringList aufgerufen, und mit dieser dann gearbeitet, ist das Teil nicht THreadsave.
Wenn nun lockStringList privat ist, so kannst Du es gleich weglassen.
Möchtest Du wirklich mit der Stringliste ausserhalb der Classe arbeiten, musst Du auch einen Schutzblock nach aussen geben.
Delphi-Quellcode:
TThreadStringList = class
private
FStringList : TStringList;
FCriticalSection : TCriticalSection;
function lockStringList: TStringList;
procedure unlock;
public
constructor create;
destructor destroy;
procedure LockList;
procedure UnlockList;
procedure add(AItem: AnsiString);
function get(AIdx: Integer): AnsiString;
procedure saveToFile(AFilePath: AnsiString);
procedure remove(AIdx: Integer);
function count:Integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ThreadStringList.LockList;
try
//-- hier Stringliste aus Classe holen und arbeiten
finally
ThreadStringList.UnlockList;
end;
end;
lg. Astat