是ICollection <>.添加()线程安全吗?

Soh*_*amC 0 c# collections concurrency thread-safety

我有一个如下集合?

public ICollection<MyClass> Property { get; private set; }
...
Property = new List<MyClass>();
Run Code Online (Sandbox Code Playgroud)

我希望在从DB中获取每个项目后添加MyClass项目.现在,每个数据库提取都在单独的后台线程中处理,并且它们同时运行.因此,DB调用的每个返回值都将面临.现在这可能会导致竞争条件,因为可能会在一个瞬间多次调用.PropertyMyClassProperty.Add()Property.Add()

所以我的问题是,List<>.Add()或者在ICollection<>.Add()内部执行的任何其他类处理任何竞争条件,还是需要明确处理?如果是这样呢?

Dav*_*ave 8

ICollection没有任何内部; 这是一个界面.实现可能是也可能不是线程安全的,但接口不保证任何东西.

这可能有助于查看:

http://msdn.microsoft.com/en-us/library/dd997305%28v=vs.110%29.aspx