C # Liste, wo Elemente eine TTL haben

7

Aus einem einfachen Beispiel möchte ich eine Liste mit Strings haben. Jedes Element in der Liste sollte 5 Minuten nach dem Hinzufügen zur Liste "ablaufen". Obwohl es keine einfache, integrierte Möglichkeit dafür gibt, würde ich gerne mit einer Datenstruktur enden, deren API so wirkt, als ob sie "einfach funktioniert".

Sie können es wie folgt verwenden:

%Vor%

Das sofortige Überprüfen von Elementen würde

ergeben %Vor%

Ein paar Minuten später sollte es

ergeben %Vor%

Schließlich sollte die Liste leer sein.

    
Larsenal 15.09.2011, 18:43
quelle

2 Antworten

23

Sie können die Klasse MemoryCache in .NET verwenden 4, mit dem Sie eine TTL angeben können, wenn Sie ein Element hinzufügen.

Einfaches Beispiel:

%Vor%

Wenn Sie nicht direkt eine TTL-Liste bereitstellen, können Sie dies für Ihre Lösung anpassen, ohne dass Sie den Cache-Ablauf selbst implementieren müssen.

    
BrokenGlass 15.09.2011, 18:49
quelle
0

Sie sollten SortedDictionary<DateTime, ...> und eine benutzerdefinierte IComparer<DateTime> verwenden können, die die Reihenfolge des Wörterbuchs "umkehrt", sodass die ältesten Elemente zuerst kommen. Bevor Sie Elemente aus dem Wörterbuch zurückgeben, entfernen Sie einfach die ersten N Elemente, die zu alt sind.

Natürlich kann das Ändern der Sammlung "im Hintergrund", wenn der Aufrufer ein einfaches Lesen erwartet, zu Problemen in einer Umgebung mit mehreren Threads führen, aber das ist ein anderes Thema ...

    
Branko Dimitrijevic 15.09.2011 18:59
quelle

Tags und Links