这更像是一个学术性问题...但是 ConcurrentDictionary.TryAdd 可能会失败吗?如果会,在哪些情况下会失败,为什么会失败?
这更像是一个学术性问题...但是 ConcurrentDictionary.TryAdd 可能会失败吗?如果会,在哪些情况下会失败,为什么会失败?
是的,可以,以下是条件(来自MSDN):
再次强调,这与并发无关。如果您担心两个线程同时插入项,则可能会出现以下情况:
System.Collections.Concurrent
命名空间,因为它经过了广泛的测试。此外,可以查看 parallel nunit。虽然我从未使用过它,但它似乎解决了并行代码单元测试的问题。如果您不使用 NUnit,则应该有其他框架可供选择。 - oleksii当然可以。如果键已经存在,该方法将返回false。
参考:http://msdn.microsoft.com/en-us/library/dd267291.aspx
返回值:System.Boolean类型,如果向ConcurrentDictionary成功添加了键/值对,则返回true。 如果键已经存在,则此方法返回false。
如果字典中已经存在相同的键,添加操作将会失败。
如果由于内存不足而无法添加值,则会抛出异常。