Dies ist eher eine akademische Frage ... aber kann ConcurrentDictionary.TryAdd fehlschlagen? Und wenn ja, in welchen Fällen und warum?
Dies ist eher eine akademische Frage ... aber kann ConcurrentDictionary.TryAdd fehlschlagen? Und wenn ja, in welchen Fällen und warum?
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:
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.