Wie lösche ich einen System.Runtime.Caching.MemoryCache

Verwende ich eine System.Runtime.Caching.MemoryCache um Einzelteile zu halten, die nie abläuft. Doch manchmal brauche ich die Möglichkeit zum löschen des gesamten cache. Wie mache ich das?

Stellte ich eine ähnliche Frage hier über, ob ich könnte aufzählen des Caches, aber das ist eine schlechte Idee, wie es muss synchronisiert werden, während der enumeration.

Ich habe versucht, mit .Trim(100) aber das funktioniert überhaupt nicht.

Habe ich versucht, immer eine Liste aller Tasten, die via Linq, aber dann bin ich wieder dort wo ich gestartet, weil entfernen von Elementen one-by-one kann leicht dazu führen, dass race-conditions.

Ich dachte zu speichern, die Schlüssel, und geben Sie dann einen .Remove(key) für jeden, aber es gibt eine implizite race-condition gibt es auch, also ich bräuchte sperren, um den Zugriff auf der Liste der Schlüssel, und alles Durcheinander wieder.

Ich dann dachte, ich sollte in der Lage sein zu rufen .Dispose() auf den gesamten cache, aber ich bin mir nicht sicher, ob dies der beste Ansatz, durch die Art, wie es umgesetzt.

Mit ChangeMonitors ist nicht eine option für mein design, und ist unnecassarily Komplex für so eine triviale Anforderung.

So, wie ich komplett den cache löschen?

InformationsquelleAutor der Frage Peter Marks | 2011-11-07

Schreibe einen Kommentar