可以ConcurrentDictionary.TryAdd失败?
这是更多的学术问题…但可以ConcurrentDictionary.TryAdd失败? 如果是的话,在什么情况下,为什么?
是的,可以,这里是条件( 从msdn ):
- ArgumentNullException – 当key为null时引用
- OverflowException – 达到最大元素数量时
- 如果具有相同密钥的元素已经存在,它将返回false
只是重申,这与并发无关。 如果您担心两个线程同时插入一个项目,则可能发生以下情况:
- 如果键不同,则两个插入都可以正常工作
- 一个插入工作正常,并返回true,另一个插入失败(没有例外),并返回false。 如果两个线程尝试使用相同的键插入项目,基本上只有一个线程会赢得另一个线程。
当然可以。 如果该键已经存在,该方法将返回false。
参考: http : //msdn.microsoft.com/en-us/library/dd267291.aspx
返回值types:System.Boolean如果已成功将键/值对添加到ConcurrentDictionary,则为true。 如果该键已经存在,则此方法返回false。
当密钥已经存在于字典中时,它将失败。
如果由于内存不足而无法添加该值,则会发生exception。
- 我如何安排一个C#Windows服务每天执行一项任务?
- EF数据上下文 – asynchronous/等待和multithreading
- 无网格K均值(或其他优化)
- C ++,'if'expression式中的variables声明
- 为什么char数据的地址不显示?
- 是否有可能从一个控件“偷”一个事件处理程序,并将其交给另一个?
- 如何打开PDF文件在一个新的选项卡或窗口,而不是下载(使用asp.net)?
- 查找时间段收集的平均值
- 初始化VCProjectEngineObject(Microsoft.VisualStudio.VCProjectEngine.dll)时出现错误80040154(类未注册的exception)