.net - 为什么 SynchronizedCollection<T> 在 System.ServiceModel 程序集中?

标签 .net

我想知道是否有人知道为什么 SynchronizedCollection 类是在 ServiceModel 程序集中实现的。我看不到程序集名称和这个(相对)通用类之间的任何联系。

最佳答案

这个类非常具体,它的名字甚至可能会产生误导——它的内部实现几乎什么都不做,除了在 Insert 中包装一些操作(AddClearIndexOflock (this.sync) {} 等)。 block ,这并没有使它真正同步(参见 this article 中描述的问题 - 简而言之,像 LINQ FirstOrDefault 这样的复合操作在 SynchronizedCollection 上不是线程安全的,因为它们不获取锁)。

它在 ServiceModel 中大量使用组装本身,可能是由 public只是因为一些ServiceModel类公开这种类型的公共(public)属性。

所以我的猜测是:它被放入 ServiceModel程序集,因为它实际上并不属于 BCL,而只是内部 ServiceModel 的 DRYish BCL 命名空间扩展需要。

关于.net - 为什么 SynchronizedCollection<T> 在 System.ServiceModel 程序集中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315406/

相关文章:

android - 使用套接字将图像从 .Net 服务器发送到 Android 客户端

.net - 如何避免进程终止通知和标准输出重定向事件之间的竞争条件?

c# - XmlReader 不考虑文档类型符号

.net - 单个 .NET 进程是否有内存限制

c# - 使用非默认 AlgorithmIdentifier 解密 EnvelopedCms

c# - 向多个用户显示由另一个用户插入的数据更新

.Net 自定义跟踪文件名

.NET 在调度程序处理挂起时无法执行此操作

c# - 更改显示 (UI)/项目 Observable 集合的顺序

c# - MySQL 查询 C# 并保存到 XML