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.
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.
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 ...
Tags und Links c# data-structures