Kann es sein, dass du die Instanz beim Refresh noch aus der Liste entfernen musst, wenn LoadFromDB fehlschlägt? Der Datensatz kann ja vielleicht zwischenzeitlich gelöscht worden sein.
Da die Reihenfolge in der Liste offenbar keine Rolle spielt, wäre vielleicht ein
TObjectDictionary<Integer, TMyClass>
für MyClassList die geschicktere Wahl. Dann schrumpft das GetMyClass etwas zusammen:
Delphi-Quellcode:
function GetMyClass(iID: Integer; bRefresh: Boolean): TMyClass;
begin
if MyClassList.TryGetValue(iID, Result) then begin
if not LoadFromDB(Result, iID) then
begin
MyClassList.Remove(iiD);
Result := nil;
end;
end
else
begin
Result := TMyClass.Create;
if LoadFromDB(Result, iID) then
MyClassList.Add(iID, Result)
else
FreeAndNil(Result);
end
end;