namespace MeloongCore; /// /// 线程安全的 实现。 /// 在 的基础上,当调用枚举器时返回一个临时副本,以避免列表在枚举过程中被修改导致异常。 /// public class ConcurrentList : SynchronizedCollection, IEnumerable, IEnumerable { // 构造函数 public ConcurrentList() : base() { } public ConcurrentList(IEnumerable data) : base(new object(), data) { } public static implicit operator ConcurrentList(List data) => new(data); public static implicit operator List(ConcurrentList data) => new(data); // 对枚举器进行覆写,返回一个临时副本 public new IEnumerator GetEnumerator() { lock (SyncRoot) { return Items.ToList().GetEnumerator(); } } IEnumerator IEnumerable.GetEnumerator() { lock (SyncRoot) { return Items.ToList().GetEnumerator(); } } }