Dies ist eher eine akademische Frage ... aber kann ConcurrentDictionary.TryAdd fehlschlagen? Und wenn ja, in welchen Fällen und warum?
c#
concurrentdictionary
Dave Lawrence
quelle
quelle
Antworten:
Ja kann es, hier sind die Bedingungen ( von msdn ):
Nur um es noch einmal zu wiederholen, dies hat nichts mit Parallelität zu tun. Wenn Sie sich Sorgen machen, dass zwei Threads gleichzeitig ein Element einfügen, kann Folgendes passieren:
quelle
System.Collections.Concurrent
Namespace vertrauen, da er ausgiebig getestet wurde. Schauen Sie sich auch Parallel Nunit an . Ich habe nie damit gearbeitet, aber es scheint das Problem des parallelen Testens von Codeeinheiten zu lösen. Es sollte andere Frameworks dafür geben, wenn Sie NUnit nicht verwenden.Sicher kann es. Wenn der Schlüssel bereits vorhanden ist, gibt die Methode false zurück.
Ref: http://msdn.microsoft.com/en-us/library/dd267291.aspx
Rückgabewert Typ: System.Boolean true, wenn das Schlüssel / Wert-Paar erfolgreich zum ConcurrentDictionary hinzugefügt wurde. Wenn der Schlüssel bereits vorhanden ist, gibt diese Methode false zurück.
quelle
Es schlägt fehl, wenn der Schlüssel bereits im Wörterbuch vorhanden ist.
Wenn der Wert nicht hinzugefügt werden kann, weil Ihnen der Speicher ausgeht, wird stattdessen eine Ausnahme angezeigt.
quelle