Hallo Zusammen,
ich habe eine Klasse, welche Daten aus einer Datenbank lädt. Sehr vereinfacht etwa so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| class Item { int m_nId; string m_sText;
//...
static Item Load(int nId) { Item item = new Item(); // Werte laden return item; } } |
Nun sollen die einzelnen Items nur einmal im Speicher vorgehalten werden und nicht immer geladen werden:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| //... static Item Load(int nId) { Item item = HoleSchonGeladenenItem(nId);
if ( item == null ) { Item item = new Item(); // Werte laden } return item; } //... |
Ich habe nun noch keinen Ansatz, wie ich diese Funktion HoleSchonGeladenenItem schreiben soll (oder welchen anderen Mechanismus ich verwenden kann). Man könnte ja nun alle Einträge in einer SortedList (oder etwas vergleichbares) speichern, allerdings will ich nicht, dass die Einträge länger als nötig im Hautspeicher vorgehalten werden, man müsste also im schlimmsten Fall sowas wie eine Garbage-Collection durchführen. Nur wie stelle ich fest, ob das Objekt noch an anderer Stelle als in der Liste aktiv ist?
Es gibt da bestimmt schon etwas passendes, aber nur was?
Vielen Dank schonmal und viele Grüße,
Jürgen