Création d'une file d'attente de taille fixe en C# avec suppression automatique des éléments plus anciens
Cet article aborde la création d'une structure de données qui conserve un historique limité des objets, supprimant automatiquement les entrées les plus anciennes lorsque la taille maximale est atteinte. Nous allons créer cette file d'attente en utilisant l'espace de noms System.Collections
.
Solution :
La solution utilise une classe wrapper, FixedSizedQueue<T>
, autour de ConcurrentQueue<T>
. La méthode Enqueue
dans ce wrapper vérifie la taille de la file d'attente. Si la file d'attente est pleine (définie par la propriété Limit
), l'élément le plus ancien est supprimé via Dequeue
pour accueillir le nouvel élément.
Voici le code C# de la classe FixedSizedQueue<T>
:
<code class="language-csharp">public class FixedSizedQueue<T> { private readonly ConcurrentQueue<T> queue = new ConcurrentQueue<T>(); private readonly object lockObject = new object(); public int Limit { get; set; } public void Enqueue(T obj) { queue.Enqueue(obj); lock (lockObject) { T overflow; while (queue.Count > Limit && queue.TryDequeue(out overflow)) ; } } }</code>
L'utilisation de FixedSizedQueue<T>
garantit un historique de taille fixe, avec suppression automatique des éléments plus anciens lorsque la limite de capacité est atteinte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!