Thread Safe Collection che supporta la rimozione degli articoli
-
14-11-2019 - |
Domanda
Non riesco a trovare un file .NET Thread Safe / Concurrent Raccogliere che supporta una semplice funzione Rimuovi () in cui posso rimuovere un elemento specifico o passare in un predicato per rimuovere gli oggetti in base a quello.Ho provato:
BlockingCollection<T>
ConcurrentQueue<T>
ConcurrentStack<T>
ConcurrentBag<T>
.
Qualcuno conosce una collezione che supporta questo comportamento, o devo crearne il mio?
Voglio essere in grado di afferrare l'elemento successivo da una coda di cabina thread senza rimuoverlo, e successivamente se viene soddisfatta una determinata condizione, procedere con la rimozione.
Soluzione
Have you tried ConcurrentDictionary
? It has a TryRemove
method, so if you think of the key as a predicate, then you will be removing the correct item.
Altri suggerimenti
Are you sure ConcurrentQueue<T>
doesn't suit your needs? It has a TryPeek
method and a TryDequeue
method that do exactly what you describe in the last paragraph.