问题描述
|
我想知道是否有人知道为什么在ServiceModel程序集中实现SynchronizedCollection 类。我看不到程序集名称与此(相对)通用类之间的任何连接。
解决方法
此类非常具体,其名称甚至可能会引起误解-除了在ѭ4nothing块中包装一些操作(
Insert
,Add
,Clear
,IndexOf
等)外,它的内部实现几乎不执行任何操作,这实际上并未使其同步(请参阅本文中描述的问题-简而言之,像LINQFirstOrDefault
这样的复合操作在SynchronizedCollection
上不是线程安全的,因为它们不获取锁。
它在ServiceModel
汇编本身中被大量使用,并且可能被制成public
只是因为某些ServiceModel
类公开了这种类型的公共属性。
所以我的猜测是:它被放到ServiceModel
汇编中,因为它实际上并不属于BCL,而仅仅是DRYish BCL名称空间扩展,用于内部ServiceModel
需求。