Provo ad implementare un ConcurrentDictionary avvolgendolo in BlockingCollection ma non sembra aver avuto successo.Come includere ConcurrentDictionary in BlockingCollection?
Capisco che una dichiarazione delle variabili lavorano con BlockingCollection quali ConcurrentBag<T>
, ConcurrentQueue<T>
, ecc
Così, per creare un ConcurrentBag avvolta in un BlockingCollection vorrei dichiarare e creare un'istanza in questo modo:
BlockingCollection<int> bag = new BlockingCollection<int>(new ConcurrentBag<int>());
ma come farlo per ConcurrentDictionary? Ho bisogno della funzionalità di blocco di BlockingCollection sul lato produttore e consumatore.
Anche il dizionario (e ConcurrentDictionary) non conserva l'ordine degli elementi. Puoi descrivere il tuo scenario produttore-consumatore? – Dennis
@Dennis, ne sono consapevole. Un produttore memorizza KeyValuePairs nel concurrentDictionary e un'attività del cliente incrementa un int e rimuove KeyValuePair se l'int corrisponde con la rispettiva chiave. Lo faccio perché le attività worker popolano il concurrentDictionary con valori ma in ordine arbitrario, l'attività consumer assicura che i valori ricevuti vengano passati/lavorati nell'ordine corretto. Un ConcurrentDictionary può essere incluso in BlockingCollection? –
Quale soluzione ti è venuta in mente? Sto cercando di trovare una buona soluzione per un problema simile in cui il produttore non produce articoli nell'ordine richiesto dal consumatore. (vecchio post lo so, ma vale la pena provare) – Kim