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();
}
}
}