Ciao ragazzi,

sto creando un applicativo console multithreading in C# e per evitare noiosi deadlock dovuti all'utilizzo di numerosi lock, sto tentando di "convertire" tutti i vecchi Dictionary in ConcurrentDictionary che sono collezioni thread-safe.

Ovviamente oltre a rinominare i Dictionary, sto provvedendo a rivedere tutti i metodi di Add e di Remove che nel ConcurrentDictionary diventano rispettivamente TryAdd e TryRemove. Per i TryAdd non ci sono problemi ma all'atto di utilizzare il TryRemove non riesco assolutamente a capire come utilizzarlo.

Immaginiamo di avere il seguente ConcurrentDictionary:

Codice:

codice:
private ConcurrentDictionary<uint, Double> Ban;
ora mi trovo a dover rimuovere, all'interno di un metodo, una coppia chiave/valore dalla precedente collection.

Ecco il metodo:

Codice:

codice:
        public void RimuoviBan(uint Id)
        {
            Bans.TryRemove(Id, out ?????);
        }
Dove ho messo i punti interrogativi evidenziati, è lì che non riesco a capire cosa devo inserire.

La MSDN cita:


key
Tipo: TKey
Chiave dell'elemento da rimuovere e restituire.

value
Tipo: TValue
Quando questo metodo termina, value contiene l'oggetto rimosso da ConcurrentDictionary<TKey, TValue> o il valore predefinito di , se l'operazione ha esito negativo.


Non riesco ancora a capire!

Chiedo aiuto!